diff options
author | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-12-21 22:09:25 +0100 |
---|---|---|
committer | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-12-21 22:09:25 +0100 |
commit | d8e183f02f67522d94deafa328e19b3081ca41be (patch) | |
tree | 4617cc4fec15365cdcdfeb594b02432937d6c946 /aoc-2020-gleam/src/days/day15.gleam | |
parent | 02598d252c0e9093384ec53e46445df1a783feda (diff) | |
download | gleam_aoc2020-d8e183f02f67522d94deafa328e19b3081ca41be.tar.gz gleam_aoc2020-d8e183f02f67522d94deafa328e19b3081ca41be.zip |
Update to newest Gleam version
Diffstat (limited to 'aoc-2020-gleam/src/days/day15.gleam')
-rw-r--r-- | aoc-2020-gleam/src/days/day15.gleam | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/aoc-2020-gleam/src/days/day15.gleam b/aoc-2020-gleam/src/days/day15.gleam index 55ef0b4..83f2bb8 100644 --- a/aoc-2020-gleam/src/days/day15.gleam +++ b/aoc-2020-gleam/src/days/day15.gleam @@ -1,7 +1,7 @@ import gleam/io import gleam/int import gleam/list -import gleam/map +import gleam/dict import gleam/string as str import gleam/function as fun import gleam/iterator as iter @@ -16,25 +16,23 @@ fn solve(input: String, nth: Int) -> Int { let history = starting - |> list.index_map(fn(index, number) { #(number, index + 1) }) - |> map.from_list + |> list.index_map(fn(number, index) { #(number, index + 1) }) + |> dict.from_list let turn = list.length(starting) let assert Ok(last) = list.last(starting) - iterx.unfold_infinitely( - from: #(history, turn, last), - with: fn(state) { - let #(history, turn, last) = state - #( - map.insert(into: history, for: last, insert: turn), - turn + 1, - case map.get(history, last) { - Ok(previous) -> turn - previous - Error(Nil) -> 0 - }, - ) - }, - ) + iterx.unfold_infinitely(from: #(history, turn, last), with: fn(state) { + let #(history, turn, last) = state + #( + dict.insert(into: history, for: last, insert: turn), + turn + + 1, + case dict.get(history, last) { + Ok(previous) -> turn - previous + Error(Nil) -> 0 + }, + ) + }) |> iter.filter(fn(state) { state.1 == nth }) |> iter.map(fn(state) { state.2 }) |> iter.first |