26 lines
782 B
Text
26 lines
782 B
Text
import <Utilities/Set.sl>;
|
|
|
|
ludic(v(1), result(1)) :=
|
|
let
|
|
n := head(v);
|
|
filtered[i] := v[i] when (i-1) mod n /= 0;
|
|
in
|
|
result when size(v) < 1 else
|
|
ludic(filtered, result ++ [n]);
|
|
|
|
count : int(1) * int * int -> int;
|
|
count(v(1), top, index) :=
|
|
index-1 when v[index] > top else
|
|
count(v, top, index + 1);
|
|
|
|
main() :=
|
|
let
|
|
ludics := ludic(2...100000, [1]);
|
|
ludics250 := ludics[1 ... count(ludics, 250, 1)];
|
|
triplets[i] := [i, i+2, i+6] when elementOf(i+2, ludics250) and elementOf(i+6, ludics250)
|
|
foreach i within ludics250;
|
|
in
|
|
"First 25:\n" ++ toString(ludics[1...25]) ++
|
|
"\n\nLudics below 1000:\n" ++ toString(count(ludics, 1000, 1)) ++
|
|
"\n\nLudic 2000 to 2005:\n" ++ toString(ludics[2000...2005]) ++
|
|
"\n\nTriples below 250:\n" ++ toString(triplets) ;
|