diff options
author | J.J <thechairman@thechairman.info> | 2024-05-30 22:08:11 -0400 |
---|---|---|
committer | J.J <thechairman@thechairman.info> | 2024-05-30 22:08:11 -0400 |
commit | d3f51f8c1de71befbb3ac9fb4967a1f831c11a73 (patch) | |
tree | eecd7403a5e6aa473fb3b8627679ccecda56d1af /aoc2019_gleam/src | |
parent | 612fd986ab1e00b6d34dc1937136250e08e89325 (diff) | |
download | gleam_aoc-d3f51f8c1de71befbb3ac9fb4967a1f831c11a73.tar.gz gleam_aoc-d3f51f8c1de71befbb3ac9fb4967a1f831c11a73.zip |
gleam 2019 day 1
Diffstat (limited to 'aoc2019_gleam/src')
-rw-r--r-- | aoc2019_gleam/src/aoc2019_gleam.gleam | 5 | ||||
-rw-r--r-- | aoc2019_gleam/src/aoc_2019/day_1.gleam | 32 |
2 files changed, 37 insertions, 0 deletions
diff --git a/aoc2019_gleam/src/aoc2019_gleam.gleam b/aoc2019_gleam/src/aoc2019_gleam.gleam new file mode 100644 index 0000000..c5a7e0a --- /dev/null +++ b/aoc2019_gleam/src/aoc2019_gleam.gleam @@ -0,0 +1,5 @@ +import gladvent + +pub fn main() { + gladvent.main() +} diff --git a/aoc2019_gleam/src/aoc_2019/day_1.gleam b/aoc2019_gleam/src/aoc_2019/day_1.gleam new file mode 100644 index 0000000..7e23172 --- /dev/null +++ b/aoc2019_gleam/src/aoc_2019/day_1.gleam @@ -0,0 +1,32 @@ +import gleam/int +import gleam/list +import gleam/result +import gleam/string + +pub fn parse(input: String) -> List(Int) { + input + |> string.split("\n") + |> list.map(int.parse) + |> result.values() +} + +pub fn pt_1(input: List(Int)) { + input + |> list.fold(0, fn(total, next) { total + naive_fuel(next) }) +} + +pub fn pt_2(input: List(Int)) { + input + |> list.fold(0, fn(total, next) { total + recursive_fuel(next) }) +} + +fn naive_fuel(weight: Int) -> Int { + { weight / 3 } - 2 +} + +fn recursive_fuel(weight: Int) -> Int { + case { weight / 3 } - 2 { + n if n <= 0 -> 0 + n -> n + recursive_fuel(n) + } +} |