24 lines
592 B
JavaScript
24 lines
592 B
JavaScript
// https://www.codewars.com/kata/perimeter-of-squares-in-a-rectangle/javascript
|
|
|
|
const perimeter = (() => {
|
|
const map = new WeakMap();
|
|
const f = n => {
|
|
if (n in map) return map[n];
|
|
if (n === 0) return fib(n) * 4;
|
|
return map[n] = 4 * fib(n) + f(n-1);
|
|
};
|
|
return f;
|
|
})();
|
|
|
|
// https://gist.github.com/gkucmierz/9bc8126bdb8d42a17ccb25f81bf02519
|
|
const fib = ((fst, snd) => {
|
|
const map = new WeakMap();
|
|
const f = n => {
|
|
if (n in map) return map[n];
|
|
if (n === 0) return fst;
|
|
if (n === 1) return snd;
|
|
return map[n] = f(n-1) + f(n-2);
|
|
};
|
|
return f;
|
|
})(1, 1);
|