2016 Update

This commit is contained in:
Tina Müller 2016-12-05 22:15:40 +01:00
parent 948b86eafa
commit dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions

View file

@ -1,17 +1,17 @@
function Y(dn) {
return (function(fn) {
return fn(fn);
}(function(fn) {
return dn(function() {
return fn(fn).apply(null, arguments);
});
}));
}
var fib = Y(function(fn) {
return function(n) {
if (n === 0 || n === 1) {
return n;
}
return fn(n - 1) + fn(n - 2);
};
});
(function () {
'use strict';
function fib(n) {
return Array.apply(null, Array(n + 1))
.map(function (_, i, lst) {
return lst[i] = (
i ? i < 2 ? 1 :
lst[i - 2] + lst[i - 1] :
0
);
})[n];
}
return fib(32);
})();

View file

@ -1,10 +1,17 @@
function* fibonacciGenerator() {
var prev = 0;
var curr = 1;
while (true) {
yield curr;
curr = curr + prev;
prev = curr - prev;
}
function Y(dn) {
return (function(fn) {
return fn(fn);
}(function(fn) {
return dn(function() {
return fn(fn).apply(null, arguments);
});
}));
}
var fib = fibonacciGenerator();
var fib = Y(function(fn) {
return function(n) {
if (n === 0 || n === 1) {
return n;
}
return fn(n - 1) + fn(n - 2);
};
});

View file

@ -0,0 +1,10 @@
function* fibonacciGenerator() {
var prev = 0;
var curr = 1;
while (true) {
yield curr;
curr = curr + prev;
prev = curr - prev;
}
}
var fib = fibonacciGenerator();

View file

@ -0,0 +1,35 @@
(() => {
'use strict';
// Nth member of fibonacci series
// fib :: Int -> Int
function fib(n) {
return mapAccumL(([a, b]) => [
[b, a + b], b
], [0, 1], range(1, n))[0][0];
};
// GENERIC FUNCTIONS
// mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
let mapAccumL = (f, acc, xs) => {
return xs.reduce((a, x) => {
let pair = f(a[0], x);
return [pair[0], a[1].concat(pair[1])];
}, [acc, []]);
}
// range :: Int -> Int -> Maybe Int -> [Int]
let range = (m, n) =>
Array.from({
length: Math.floor(n - m) + 1
}, (_, i) => m + i);
// TEST
return fib(32);
// --> 2178309
})();

View file

@ -0,0 +1,22 @@
(() => {
'use strict';
// fib :: Int -> Int
let fib = n => range(1, n)
.reduce(([a, b]) => [b, a + b], [0, 1])[0];
// GENERIC [m..n]
// range :: Int -> Int -> [Int]
let range = (m, n) =>
Array.from({
length: Math.floor(n - m) + 1
}, (_, i) => m + i);
// TEST
return fib(32);
// --> 2178309
})();