diff options
author | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-03-02 21:40:59 +0100 |
---|---|---|
committer | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-03-02 21:40:59 +0100 |
commit | 6c661db5b3e167d45554f7c5e4838dbc3bffa63a (patch) | |
tree | 6ba5eebddc1713f5bd4ee9fe740937a8031d151e /aoc-2020-gleam/src/days/day07.gleam | |
parent | 2ba7501d516afa4ab240faccefb6a3f72223598e (diff) | |
download | gleam_aoc2020-6c661db5b3e167d45554f7c5e4838dbc3bffa63a.tar.gz gleam_aoc2020-6c661db5b3e167d45554f7c5e4838dbc3bffa63a.zip |
Refactor using constructs from Gleam v0.27
Diffstat (limited to 'aoc-2020-gleam/src/days/day07.gleam')
-rw-r--r-- | aoc-2020-gleam/src/days/day07.gleam | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/aoc-2020-gleam/src/days/day07.gleam b/aoc-2020-gleam/src/days/day07.gleam index 2e7c890..fb5949c 100644 --- a/aoc-2020-gleam/src/days/day07.gleam +++ b/aoc-2020-gleam/src/days/day07.gleam @@ -1,10 +1,12 @@ import gleam/io +import gleam/int import gleam/list import gleam/pair import gleam/result as res import gleam/function as fun import gleam/map.{Map} import gleam/iterator.{Iterator} as iter +import ext/genericx as genx import ext/resultx as resx import ext/iteratorx as iterx import util/graph @@ -85,16 +87,18 @@ fn part1(lines: List(String)) -> Int { graph |> map.keys |> iter.from_list - |> iter.filter(for: fn(bag) { bag != special_bag }) + |> iter.filter(for: genx.different(_, than: special_bag)) |> iterx.count(satisfying: fn(start) { start |> graph.dfs(with: neighbours) - |> iter.any(fn(bag) { bag == special_bag }) + |> iter.any(satisfying: genx.equals(_, special_bag)) }) } fn part2(lines: List(String)) -> Int { - bag_count(of: special_bag, in: parse_graph(lines)) - 1 + special_bag + |> bag_count(in: parse_graph(lines)) + |> int.subtract(1) } pub fn run() -> Nil { |