randRange(3, 8)
randRange(2, 4)
randRange(3, 8)
randRange(2, 4)
shuffle([
function(C, D, x, y) { return ["+", ["*", C, x], y]; },
function(C, D, x, y) { return ["-", ["*", C, x], y]; },
function(C, D, x, y) { return ["+", x, ["*", C, y]]; },
function(C, D, x, y) { return ["-", x, ["*", C, y]]; },
function(C, D, x, y) { return ["-", ["*", C, x], ["*", D, y]]; },
function(C, D, x, y) { return ["-", ["*", D, x], ["*", C, y]]; },
function(C, D, x, y) { return ["*", x, ["-", y, C]]; },
function(C, D, x, y) { return ["*", ["-", C, x], y]; },
function(C, D, x, y) { return ["+", ["^", x, 2], ["*", D, ["^", y, 2]]]; },
function(C, D, x, y) { return ["+", ["*", D, ["^", x, 2]], ["^", y, 2]]; },
function(C, D, x, y) { return ["-", ["^", x, 2], ["*", D, ["^", y, 2]]]; },
function(C, D, x, y) { return ["-", ["*", D, ["^", x, 2]], ["^", y, 2]]; },
function(C, D, x, y) { return ["-", ["*", D, x], C]; },
function(C, D, x, y) { return ["+", ["*", C, y], D]; },
function(C, D, x, y) { return ["+", ["*", x, y], ["*", D, x], ["-", y]]; }
], 2)
!isNaN(expr(FUN1(A, B, 0, NaN), true))
!isNaN(expr(FUN1(A, B, NaN, 0), true))
randRange(-6, 6)
randRange(-6, 6)
randRange(-6, 6)
expr(FUN2(C, D, "x", "y"))
expr(FUN2(C, D, Y, Z))
expr(FUN2(C, D, Y, Z), true)
expr(FUN1(A, B, "x", "y"))
shuffle([
"<code>x " + binop(1) + " y = " + TEXT1 + "</code>",
"<code>x " + binop(2) + " y = " + TEXT2 + "</code>"
]).join(" and ")
expr(FUN1(A, B, X, VALU2))
expr(FUN1(A, B, X, VALU2), true)
!FUN1_XONLY
"left"
If TEXTS, find X binop(1) (Y binop(2) Z)
.
VALU1
Now, find X binop(1) VALU2
:
Find X binop(1) y
:
\qquad X binop(1) NEED_VALU1 ? VALU2 : "y" = SUBS1
\qquad \hphantom{X binop(1) VALU2} = VALU1
.
\qquad \hphantom{X binop(1) y} = VALU1
.
expr(FUN1(A, B, VALU2, X))
expr(FUN1(A, B, VALU2, X), true)
!FUN1_YONLY
"right"
If TEXTS, find (Y binop(2) Z) binop(1) X
.
VALU1
Now, find VALU2 binop(1) X
:
Find x binop(1) X
:
\qquad NEED_VALU1 ? VALU2 : "x" binop(1) X = SUBS1
\qquad \hphantom{VALU2 binop(1) X} = VALU1
.
\qquad \hphantom{x binop(1) X} = VALU1
.
First, find Y binop(2) Z
:
\qquad Y binop(2) Z = SUBS2
\qquad \hphantom{Y binop(2) Z} = VALU2
.
We don't need to find Y binop(2) Z
because x binop(1) y
depends only on the NEED_VALU1_ONLY operand.