aboutsummaryrefslogtreecommitdiff
path: root/aoc-2020-gleam/src/ext
diff options
context:
space:
mode:
authorTomasz Chojnacki <tomaszchojnacki2001@gmail.com>2023-04-06 11:47:33 +0200
committerTomasz Chojnacki <tomaszchojnacki2001@gmail.com>2023-04-06 11:47:33 +0200
commitbcd24674ec0a594882b276fd48fe70c6e3d7ec86 (patch)
treeb89a268e3a11267a34e3cd1a2d42f6ed432c97fd /aoc-2020-gleam/src/ext
parentfeb51c3a6e7eb8a7ac3fa22ac5d12d20e84eb65f (diff)
downloadgleam_aoc2020-bcd24674ec0a594882b276fd48fe70c6e3d7ec86.tar.gz
gleam_aoc2020-bcd24674ec0a594882b276fd48fe70c6e3d7ec86.zip
Finish day 11
Diffstat (limited to 'aoc-2020-gleam/src/ext')
-rw-r--r--aoc-2020-gleam/src/ext/mapx.gleam16
-rw-r--r--aoc-2020-gleam/src/ext/setx.gleam10
2 files changed, 26 insertions, 0 deletions
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)
+}