Files
lci/lib/utility/utility.ml

26 lines
590 B
OCaml
Raw Normal View History

let rec pow a = function
| 0 -> 1
| 1 -> a
| n ->
let b = pow a (n / 2) in
b * b * (if n mod 2 = 0 then 1 else a)
let rec powmod a d = function
| 0 -> 1
| 1 -> a mod d
| n ->
let b = (powmod a d (n / 2)) mod d in
(((b * b) mod d) * (if n mod 2 = 0 then 1 else a)) mod d
2024-11-06 17:21:14 +01:00
let alphabet = "abcdefghijklmnopqrstuvwxyz"
let base = 26
let rec fromIntToString (x: int) : string =
if x < 0 then
""
else if x < base then
String.get alphabet x |> String.make 1
else
(fromIntToString (x/base - 1)) ^ (String.get alphabet (x mod base) |> String.make 1)