Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Clear&Readable solution in Clear category for [old] Fractions Addition by SaintDron
"use strict";
function addTwoFracts (f1, f2) {
let den = f1[1] * f2[1];
let num = f1[0] * f2[1] + f2[0] * f1[1];
if (num % f1[1] === 0) {
den /= f1[1];
num /= f1[1];
}
if (num % f2[1] === 0) {
den /= f2[1];
num /= f2[1];
}
return [num, den];
}
function addFractions(fracts) {
let [num, den] = fracts.reduce(addTwoFracts),
whole = Math.floor(num / den),
rest = num % den,
res = rest + "/" + den;
if (!rest)
return whole;
return (whole) ? whole + " and " + res : res;
}
var assert = require('assert');
if (!global.is_checking) {
console.log('Example:')
console.log(addFractions(((2, 3), (2, 3))))
// These "asserts" are used for self-checking and not for an auto-testing
assert.equal(addFractions(((2, 3), (2, 3))), "1 and 1/3")
assert.equal(addFractions(((1, 3), (1, 3))), "2/3")
assert.equal(addFractions(((1, 3), (1, 3), (1, 3))), 1)
console.log("Coding complete? Click 'Check' to earn cool rewards!");
}
May 10, 2018