aboutsummaryrefslogtreecommitdiff
path: root/aoc-2020-gleam/src/days/day01.gleam
diff options
context:
space:
mode:
authorTomasz Chojnacki <tomaszchojnacki2001@gmail.com>2023-01-27 16:19:57 +0100
committerTomasz Chojnacki <tomaszchojnacki2001@gmail.com>2023-01-27 16:19:57 +0100
commit96d397d8e184606315ef0e08273cea4f3fcd3f5d (patch)
tree2c52afd9b71a4025bcb7a9a554ba9098b0453f71 /aoc-2020-gleam/src/days/day01.gleam
parent29c49417f89169c03ca05724da3c88880d3a1a17 (diff)
downloadgleam_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.gleam34
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
+}