From bcd24674ec0a594882b276fd48fe70c6e3d7ec86 Mon Sep 17 00:00:00 2001 From: Tomasz Chojnacki Date: Thu, 6 Apr 2023 11:47:33 +0200 Subject: Finish day 11 --- aoc-2020-gleam/src/ext/mapx.gleam | 16 ++++++++++++++++ aoc-2020-gleam/src/ext/setx.gleam | 10 ++++++++++ 2 files changed, 26 insertions(+) create mode 100644 aoc-2020-gleam/src/ext/mapx.gleam create mode 100644 aoc-2020-gleam/src/ext/setx.gleam (limited to 'aoc-2020-gleam/src/ext') diff --git a/aoc-2020-gleam/src/ext/mapx.gleam b/aoc-2020-gleam/src/ext/mapx.gleam new file mode 100644 index 0000000..244c1ac --- /dev/null +++ b/aoc-2020-gleam/src/ext/mapx.gleam @@ -0,0 +1,16 @@ +import gleam/map.{Map} +import gleam/iterator.{Iterator} as iter + +pub fn from_iter(iterator: Iterator(#(k, v))) -> Map(k, v) { + iter.fold( + over: iterator, + from: map.new(), + with: fn(acc, cur) { map.insert(acc, cur.0, cur.1) }, + ) +} + +pub fn to_iter(map: Map(k, v)) -> Iterator(#(k, v)) { + map + |> map.to_list + |> iter.from_list +} diff --git a/aoc-2020-gleam/src/ext/setx.gleam b/aoc-2020-gleam/src/ext/setx.gleam new file mode 100644 index 0000000..57e368e --- /dev/null +++ b/aoc-2020-gleam/src/ext/setx.gleam @@ -0,0 +1,10 @@ +import gleam/set.{Set} +import gleam/iterator as iter +import ext/iteratorx as iterx + +pub fn count(set: Set(a), satisfying predicate: fn(a) -> Bool) -> Int { + set + |> set.to_list + |> iter.from_list + |> iterx.count(satisfying: predicate) +} -- cgit v1.2.3