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

@ -0,0 +1,39 @@
(function () {
// permutations :: [a] -> [[a]]
function permutations(xs) {
return xs.length ? (concatMap(
function (x) {
return concatMap(
function (ys) {
return ([[x].concat(ys)]);
}, permutations(delete1(x, xs)))
}, xs)) : [[]]
}
// GENERIC LIBRARY FUNCTIONS
// concatMap :: (a -> [b]) -> [a] -> [b]
function concatMap(f, xs) {
return [].concat.apply([], xs.map(f));
}
// delete first instance of a in [a]
// delete1 :: a -> [a] -> [a]
function delete1(x, xs) {
return deleteBy(function (a, b) {
return a === b;
}, x, xs);
}
// deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
function deleteBy(fnEq, x, xs) {
return xs.length ? fnEq(x, xs[0]) ? xs.slice(1) : [xs[0]]
.concat(deleteBy(fnEq, x, xs.slice(1))) : [];
}
return permutations(['Aardvarks', 'eat', 'ants'])
})();