blob: 8a7fd2d39322be9c26c9a1d4ffb5e842ed099efe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
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)) {
list.fold(input, 0, fn(total, next) { total + naive_fuel(next) })
}
pub fn pt_2(input: List(Int)) {
list.fold(input, 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)
}
}
|