randVar() 7 [BLUE, RED, GREEN, PURPLE] 2 + (random() < 0.25 ? 1 : 0) [randFromArray(["-", "+"]), randFromArray(["-", "+"])].slice(0, N - 1) _.any(SIGNS, function(s) { return s === "-"; }) _(N).times(function(term) { return randRange(2, 5 - N); }) randRangeUnique(1, MAX_DEGREE, 4) NON_ZERO_INDICES.sort(function(a, b) {return b - a; }) tabulate(function(e){for(var r=[],a=shuffle(NON_ZERO_INDICES).slice(0,TERMS[e]),n=0;MAX_DEGREE>=n;n++)r[n]=-1!==a.indexOf(n)?randRangeNonZero(-7,7):0;return new Polynomial(0,MAX_DEGREE,r,X)},N) function(){for(var e=POLYNOMIALS[0],r=1;N>r;r++)e=e.add(POLYNOMIALS[r]);return e}() function(){for(var e=[[],[],[],[]],r=[],a=0;4>a;a++){for(var n=0;n<POLYNOMIALS.length;n++){var o=POLYNOMIALS[n].coefs[SORTED_INDICES[a]];0!==o&&e[a].push(o)}0===e[a].length&&r.push(a)}r.sort(function(e,r){return r-e});for(var n=0;n<r.length;n++)e.splice(r[n],1),SORTED_INDICES.splice(r[n],1);return e}()

Simplifica la expresión.

(POLYNOMIALS[0]) SIGNS[0] (POLYNOMIALS[1] POLYNOMIALS[1].multiply(-1)) SIGNS[1] (POLYNOMIALS[2] POLYNOMIALS[2].multiply(-1))

SOLUTION.parsableText()

Distribuye los signos negativos.

(POLYNOMIALS[0]) + (POLYNOMIALS[1]) + (POLYNOMIALS[2])

Dado que estamos sumando polinomios, simplemente podemos eliminar los paréntesis.

POLYNOMIALS[0] + POLYNOMIALS[1] + POLYNOMIALS[2]

Identifica los términos similares.

(POL.coefs[index] < 0) ? "-" : (n === 0 && POL === POLYNOMIALS[0]) ? "" : "+" \color{COLORS[ n ]}{abs(POL.coefs[index]) === 1 ? "" : abs(POL.coefs[index]) X^index}

Combina términos similares.

+ \color{COLORS[index1]}{ coeff[0] ( + TERM ) X^SORTED_INDICES[index1]}

Suma los coeficientes.

SOLUTION