'use strict';

const R = require('ramda');

class FizzBuzz {

    static upTo(n) {
        const s = R.toString
        const f = R.always("fizz");
        const b = R.always("buzz");
        const fb = R.always(f() + b());
        const funs = [s, s, f, s, b, f, s, s, f, b, s, f, s, s, fb];

        const selectFun = n => R.nth(R.modulo(R.dec(n), 15), funs);
        const fizzBuzzify = (n) => R.call(selectFun(n), n);

        return R.map(fizzBuzzify, R.range(1, R.inc(n)));
    }
}

module.exports = FizzBuzz;
@@ -94,385 +94,419 @@
 nst 
-s = R.toString%0A        const f = R.always(%22fizz%22);%0A        const b = R.always(%22buzz%22);%0A        const fb = R.always(f() + b());%0A        const funs = %5Bs, s, f, s, b, f, s, s, f, b, s, f, s, s, fb%5D;%0A%0A        const selectFun = n =%3E R.nth(R.modulo(R.dec(n), 15), funs);%0A        const fizzBuzzify = (n) =%3E R.call(selectFun(n), n);%0A%0A        return R.map(fizzBuzzify, R.range(1, R.inc(
+replaceBlanksWithNumber = (fb, idx) =%3E R.isEmpty(fb) ? %22%22 + R.inc(idx) : fb;%0A        const mapIndexed = R.addIndex(R.map);%0A        const repFlat = (s, n) =%3E R.compose(%0A            R.take(n),%0A            R.flatten,%0A            R.repeat(s))(n);%0A%0A        return mapIndexed(replaceBlanksWithNumber, R.zipWith(R.concat,%0A                repFlat(%5B%22%22, %22%22, %22fizz%22%5D, n),%0A                repFlat(%5B%22%22, %22%22, %22%22, %22%22, %22buzz%22%5D, 
 n)))

replace lookup with string concat