randRange(2, 3) _.map(_.range(N),function(){return randFromArray(["decimal","percentage","fraction","fraction"])}).slice(0,N) _.map(TYPES,function(){return randFromArray([2,4,5,8,10,20,25,40,50,100])}) _.map(DENOMINATORS,function(e){return randRangeNonZero(2*-e,2*e)}) _.map(DENOMINATORS,function(e,r){return roundTo(3,NUMERATORS[r]/e)}) _.map(TYPES,function(e,r){return"fraction"===e?fraction(NUMERATORS[r],DENOMINATORS[r]):"percentage"===e?roundTo(3,100*DECIMALS[r])+"\\%":DECIMALS[r]}) function(){for(var e=[],r=0;N>r;r++)"decimal"!==TYPES[r]&&e.push(r);return e}() function(){for(var e=0,r=0;N>r;r++)e+=NUMERATORS[r]/DENOMINATORS[r];return roundTo(3,e)}()

NUMS[0] + NUMS[1] + NUMS[2] = {?}

SOLUTION
Primero obtén todos los números en forma decimal.

\qquadNUMS[i] = DECIMALS[i]

\qquad NUMS[i] = fraction(roundTo(3, NUMERATORS[i] * 100 / DENOMINATORS[i]), 100) = DECIMALS[i]

Ahora tenemos:

\qquad DECIMALS[0] + DECIMALS[1] + DECIMALS[2] = {?}

\qquad DECIMALS[0] + DECIMALS[1] + DECIMALS[2] = SOLUTION