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