diff options
Diffstat (limited to 'aoc-2020-gleam/src/days/day01.gleam')
-rw-r--r-- | aoc-2020-gleam/src/days/day01.gleam | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/aoc-2020-gleam/src/days/day01.gleam b/aoc-2020-gleam/src/days/day01.gleam new file mode 100644 index 0000000..6e75826 --- /dev/null +++ b/aoc-2020-gleam/src/days/day01.gleam @@ -0,0 +1,34 @@ +import gleam/io +import gleam/int +import gleam/list +import gleam/result +import ext/resultx +import util/input_util + +fn solve(numbers: List(Int), n: Int) -> Int { + numbers + |> list.combinations(by: n) + |> list.find(one_that: fn(p) { int.sum(p) == 2020 }) + |> result.map(with: int.product) + |> resultx.force_unwrap() +} + +fn part1(numbers: List(Int)) -> Int { + solve(numbers, 2) +} + +fn part2(numbers: List(Int)) -> Int { + solve(numbers, 3) +} + +pub fn run() -> Nil { + let test = input_util.read_numbers("test01") + assert 514_579 = part1(test) + assert 241_861_950 = part2(test) + + let input = input_util.read_numbers("day01") + io.debug(part1(input)) + io.debug(part2(input)) + + Nil +} |