aboutsummaryrefslogtreecommitdiff
path: root/src/sequence.ml
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2022-10-30 03:42:11 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2022-10-30 03:42:11 +1300
commit95ebd2d6acfa744c5e93287cc6385f4f1359376e (patch)
tree87cea8951f3ef00b9ad53679c7fe70c208b0ec62 /src/sequence.ml
parent3f290e0d6c3ef1435253095de2cf53016855840e (diff)
wallgen and wallsolve working, visualwall partially done, license added
Diffstat (limited to 'src/sequence.ml')
-rw-r--r--src/sequence.ml35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/sequence.ml b/src/sequence.ml
new file mode 100644
index 0000000..fba7f96
--- /dev/null
+++ b/src/sequence.ml
@@ -0,0 +1,35 @@
+
+
+(* Programmed by Jedidiah Barber *)
+(* Licensed under the Sunset License v1.0 *)
+
+
+let fibonacci ~len =
+ let rec fib a b r =
+ if List.length (r) > len - 1 then r
+ else fib b Z.(a + b) (a :: r)
+ in Array.of_list (List.rev (fib Z.zero Z.one []))
+
+
+
+let pagoda ~len =
+ let open Z in
+ let rec b n =
+ if n = zero then zero
+ else (uneven n) / ~$2 mod ~$2
+ and a n =
+ if ~$n = zero then minus_one
+ else b (~$n + one) - b (~$n - one)
+ and uneven n =
+ if is_even n then uneven (n / ~$2) else n
+ in Array.init len a
+
+
+
+let random ~len =
+ Random.self_init ();
+ let f n =
+ Z.of_int ((Random.int 1000000000) - 500000000)
+ in Array.init len f
+
+