diff options
author | Marvin Borner | 2024-03-21 12:51:02 +0100 |
---|---|---|
committer | Marvin Borner | 2024-03-21 12:51:02 +0100 |
commit | 93b53a5354620d94b128008d0b17670cc87c92f5 (patch) | |
tree | c1f5c80b9d2fb0c8750ddb69b281450e7033e556 | |
parent | 8b82e5d7f485fc76250b9ed2ad756b913e930df1 (diff) |
Added lcm
-rw-r--r-- | samples/rosetta/hailstone.bruijn | 2 | ||||
-rw-r--r-- | samples/rosetta/least_common_multiple.bruijn | 8 | ||||
-rw-r--r-- | std/Math.bruijn | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/samples/rosetta/hailstone.bruijn b/samples/rosetta/hailstone.bruijn index 46cf8a2..d98c235 100644 --- a/samples/rosetta/hailstone.bruijn +++ b/samples/rosetta/hailstone.bruijn @@ -16,6 +16,6 @@ seq-27 hailstone (+27b) :test (take (+4) <~>seq-27) ((+1b) : ((+2b) : ((+4b) : {}(+8b)))) all-below-100000 [0 : ∀(hailstone 0)] <$> seq - seq take (+1000) (iterate ++‣ (+1b)) + seq take (+99999) (iterate ++‣ (+1b)) main [head (max-by (M.compare ⋔ tail) all-below-100000)] diff --git a/samples/rosetta/least_common_multiple.bruijn b/samples/rosetta/least_common_multiple.bruijn new file mode 100644 index 0000000..9a6c08e --- /dev/null +++ b/samples/rosetta/least_common_multiple.bruijn @@ -0,0 +1,8 @@ +:import std/Math . + +lcm [[=?1 1 (=?0 0 |(1 / (gcd 1 0) ⋅ 0))]] + +:test ((lcm (+12) (+18)) =? (+36)) ([[1]]) +:test ((lcm (+42) (+25)) =? (+1050)) ([[1]]) + +main [[0]] diff --git a/std/Math.bruijn b/std/Math.bruijn index 5952592..e2a9466 100644 --- a/std/Math.bruijn +++ b/std/Math.bruijn @@ -73,6 +73,12 @@ gcd z [[[=?0 1 (2 0 (1 % 0))]]] ⧗ Number → Number → Number :test ((gcd (+10) (+5)) =? (+5)) (true) :test ((gcd (+3) (+8)) =? (+1)) (true) +# least common multiple using gcd +lcm [[=?1 1 (=?0 0 |(1 / (gcd 1 0) ⋅ 0))]] ⧗ Number → Number → Number + +:test ((lcm (+12) (+18)) =? (+36)) (true) +:test ((lcm (+42) (+25)) =? (+1050)) (true) + # power function pow […!!… (iterate (…⋅… 0) (+1))] ⧗ Number → Number → Number |