diff options
author | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-01-27 16:19:57 +0100 |
---|---|---|
committer | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-01-27 16:19:57 +0100 |
commit | 96d397d8e184606315ef0e08273cea4f3fcd3f5d (patch) | |
tree | 2c52afd9b71a4025bcb7a9a554ba9098b0453f71 /aoc-2020-gleam/src/days/day01.gleam | |
parent | 29c49417f89169c03ca05724da3c88880d3a1a17 (diff) | |
download | gleam_aoc2020-96d397d8e184606315ef0e08273cea4f3fcd3f5d.tar.gz gleam_aoc2020-96d397d8e184606315ef0e08273cea4f3fcd3f5d.zip |
Solve day 1 of 2020 in Gleam
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 +} |