aboutsummaryrefslogtreecommitdiff
path: root/aoc2019_gleam/src/aoc_2019/day_1.gleam
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)
  }
}