aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarvin Borner2024-03-21 12:51:02 +0100
committerMarvin Borner2024-03-21 12:51:02 +0100
commit93b53a5354620d94b128008d0b17670cc87c92f5 (patch)
treec1f5c80b9d2fb0c8750ddb69b281450e7033e556
parent8b82e5d7f485fc76250b9ed2ad756b913e930df1 (diff)
Added lcm
-rw-r--r--samples/rosetta/hailstone.bruijn2
-rw-r--r--samples/rosetta/least_common_multiple.bruijn8
-rw-r--r--std/Math.bruijn6
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