September 2017 Update

This commit is contained in:
Ingy döt Net 2017-09-23 10:01:46 +02:00
parent bba7bfd280
commit ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions

View file

@ -4,11 +4,14 @@ function range(begin, end) {
}
function triples(n) {
return [[x,y,z] for each (x in range(1,n+1))
for each (y in range(x,n+1))
for each (z in range(y,n+1))
if (x*x + y*y == z*z) ]
return [
[x, y, z]
for each(x in range(1, n + 1))
for each(y in range(x, n + 1))
for each(z in range(y, n + 1))
if (x * x + y * y == z * z)
]
}
for each (var triple in triples(20))
print(triple);
for each(var triple in triples(20))
print(triple);

View file

@ -1,18 +1,31 @@
(n => {
(n => {
'use strict';
let flatMap = (xs, f) => [].concat.apply([], xs.map(f)),
// GENERIC FUNCTIONS ------------------------------------------------------
range = (m, n) => Array.from({
length: (n - m) + 1
}, (_, i) => m + i);
// concatMap :: (a -> [b]) -> [a] -> [b]
const concatMap = (f, xs) => [].concat.apply([], xs.map(f));
// enumFromTo :: Int -> Int -> [Int]
const enumFromTo = (m, n) =>
Array.from({
length: Math.floor(n - m) + 1
}, (_, i) => m + i);
return flatMap(range(1, n), (x) =>
flatMap(range(1 + x, n), (y) =>
flatMap(range(1 + y, n), (z) =>
x * x + y * y === z * z ? [
[x, y, z]
] : []
)));
// EXAMPLE ----------------------------------------------------------------
})(20);
// [(x, y, z) | x <- [1..n], y <- [x..n], z <- [y..n], x ^ 2 + y ^ 2 == z ^ 2]
return concatMap(x =>
concatMap(y =>
concatMap(z =>
x * x + y * y === z * z ? [
[x, y, z]
] : [],
enumFromTo(y, n)),
enumFromTo(x, n)),
enumFromTo(1, n));
})(20);

View file

@ -0,0 +1 @@
[[3, 4, 5], [5, 12, 13], [6, 8, 10], [8, 15, 17], [9, 12, 15], [12, 16, 20]]