shuffle(["f", "g", "h"]) ["x", "n", "t"] new Polynomial( randRange(0, 2), randRangeWeighted(1, 3, 3, 0.2), null, randFromArray(FUNC_VARIABLES), FUNC_NAMES[0] ) new CompositePolynomial( randRange(0, 2), randRangeWeighted(1, 3, 3, 0.2), null, randFromArray(FUNC_VARIABLES), FUNC_NAMES[1], INNER )
shuffle([INNER, OUTER]) shuffle([INNER, OUTER]) randRange(-10, 10) SOLVE_FOR[1].evalOf(VALUE) SOLVE_FOR[0].evalOf(INNER_VALUE)
  • FUNCTIONS[0].name(FUNCTIONS[0].variable) = FUNCTIONS[0].text()
  • FUNCTIONS[1].name(FUNCTIONS[1].variable) = FUNCTIONS[1].text()

SOLVE_FOR[0].name(SOLVE_FOR[1].name(VALUE)) = {?}

OUTER_VALUE

new CompositePolynomial( randRange(0, 2), randRange(1, 3), null, randFromArray(FUNC_VARIABLES), FUNC_NAMES[2], randFromArray([INNER, OUTER]) ) shuffle([INNER, OUTER, OUTER2]) shuffle([INNER, OUTER, OUTER2]) randRange(-10, 10) SOLVE_FOR[1].evalOf(VALUE) SOLVE_FOR[0].evalOf(INNER_VALUE)
  • FUNCTIONS[0].name(FUNCTIONS[0].variable) = FUNCTIONS[0].text()
  • FUNCTIONS[1].name(FUNCTIONS[1].variable) = FUNCTIONS[1].text()
  • FUNCTIONS[2].name(FUNCTIONS[2].variable) = FUNCTIONS[2].text()

SOLVE_FOR[0].name(SOLVE_FOR[1].name(VALUE)) = {?}

OUTER_VALUE

First, let's solve for the value of the inner function, SOLVE_FOR[1].name(VALUE). Then we'll know what to plug into the outer function.

value

Now we know that SOLVE_FOR[1].name(VALUE) = INNER_VALUE. Let's solve for SOLVE_FOR[0].name(SOLVE_FOR[1].name(VALUE)), which is SOLVE_FOR[0].name(INNER_VALUE).

value