From 6ae44d09faa0ae353c0818705503cad42127d102 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sun, 3 Mar 2024 15:03:41 +0100 Subject: Even more samples wtf --- samples/rosetta/hamming_numbers.bruijn | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 samples/rosetta/hamming_numbers.bruijn (limited to 'samples/rosetta/hamming_numbers.bruijn') diff --git a/samples/rosetta/hamming_numbers.bruijn b/samples/rosetta/hamming_numbers.bruijn new file mode 100644 index 0000000..426223d --- /dev/null +++ b/samples/rosetta/hamming_numbers.bruijn @@ -0,0 +1,28 @@ +:import std/Combinator . +:import std/Number . +:import std/List . + +merge y [[[∅?1 0 (1 [[2 [[go]]]])]]] + go 3 ((+1) : 0))]]] + +:test ((hammings-classic !! (+42)) =? (+162)) ([[1]]) + +# enumeration by a chain of folded merges (faster) +hammings-folded ([(0 ∘ a) ∘ (0 ∘ b)] (foldr merge1 empty)) $ c + merge1 [[1 [[1 : (merge 0 2)]]]] + a iterate (map (mul (+5))) + b iterate (map (mul (+3))) + c iterate (mul (+2)) (+1) + +:test ((hammings-folded !! (+42)) =? (+162)) ([[1]]) + +# --- output --- + +main [first-twenty : (n1691 : {}n1000000)] + first-twenty take (+20) hammings-folded + n1691 hammings-folded !! (+1690) + n1000000 hammings-folded !! (+999999) -- cgit v1.2.3