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/day17.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/day17.gleam')
-rw-r--r-- | aoc-2020-gleam/src/days/day17.gleam | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/aoc-2020-gleam/src/days/day17.gleam b/aoc-2020-gleam/src/days/day17.gleam index 78603e0..e17439c 100644 --- a/aoc-2020-gleam/src/days/day17.gleam +++ b/aoc-2020-gleam/src/days/day17.gleam @@ -2,7 +2,7 @@ import gleam/io import gleam/list import gleam/bool import gleam/string as str -import gleam/set.{Set} +import gleam/set.{type Set} import util/input_util import util/pos3 import util/pos4 @@ -10,10 +10,10 @@ import util/pos4 fn parse_grid(input: String, with constructor: fn(Int, Int) -> a) -> Set(a) { input |> str.split(on: "\n") - |> list.index_map(with: fn(y, line) { + |> list.index_map(with: fn(line, y) { line |> str.to_graphemes - |> list.index_map(with: fn(x, grapheme) { + |> list.index_map(with: fn(grapheme, x) { case grapheme { "#" -> [constructor(x, y)] "." -> [] @@ -34,15 +34,12 @@ fn cycle( use <- bool.guard(when: times == 0, return: grid) grid - |> set.fold( - from: set.new(), - with: fn(acc, pos) { - acc - |> set.insert(pos) - |> set.union(neighbours(pos)) - }, - ) - |> set.filter(for: fn(pos) { + |> set.fold(from: set.new(), with: fn(acc, pos) { + acc + |> set.insert(pos) + |> set.union(neighbours(pos)) + }) + |> set.filter(keeping: fn(pos) { let active = set.contains(in: grid, this: pos) let count = pos @@ -76,9 +73,9 @@ fn part2(input: String) -> Int { } pub fn main() -> Nil { - let test = input_util.read_text("test17") - let assert 112 = part1(test) - let assert 848 = part2(test) + let testing = input_util.read_text("test17") + let assert 112 = part1(testing) + let assert 848 = part2(testing) let input = input_util.read_text("day17") io.debug(part1(input)) |