diff options
author | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-04-06 22:00:05 +0200 |
---|---|---|
committer | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-04-06 22:00:05 +0200 |
commit | 76e1d24c9cb3f2461f4dca08271fa25f97e820b7 (patch) | |
tree | 232859b85c356d71fdb89e8c627df17455bd812b /aoc-2020-gleam/src/ext | |
parent | 20852d6e60bee896e84c9bae77f45211773dbf60 (diff) | |
download | gleam_aoc2020-76e1d24c9cb3f2461f4dca08271fa25f97e820b7.tar.gz gleam_aoc2020-76e1d24c9cb3f2461f4dca08271fa25f97e820b7.zip |
Finish day 13
Diffstat (limited to 'aoc-2020-gleam/src/ext')
-rw-r--r-- | aoc-2020-gleam/src/ext/intx.gleam | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/aoc-2020-gleam/src/ext/intx.gleam b/aoc-2020-gleam/src/ext/intx.gleam index 9f06850..077b4f2 100644 --- a/aoc-2020-gleam/src/ext/intx.gleam +++ b/aoc-2020-gleam/src/ext/intx.gleam @@ -1,3 +1,24 @@ +import gleam/int +import gleam/order.{Eq, Gt, Lt} + pub fn is_between(number: Int, min: Int, and max: Int) { min <= number && number <= max } + +pub fn ceil_divide(dividend: Int, by divisor: Int) -> Int { + { dividend + divisor - 1 } / divisor +} + +fn gcd(a: Int, b: Int) -> Int { + case b == 0 { + True -> a + False -> gcd(b, a % b) + } +} + +pub fn lcm(a: Int, b: Int) -> Int { + case int.compare(a, b) { + Gt | Eq -> { a / gcd(a, b) } * b + Lt -> { b / gcd(a, b) } * a + } +} |