aboutsummaryrefslogtreecommitdiff
path: root/aoc-2020-gleam/src/ext
diff options
context:
space:
mode:
Diffstat (limited to 'aoc-2020-gleam/src/ext')
-rw-r--r--aoc-2020-gleam/src/ext/intx.gleam9
-rw-r--r--aoc-2020-gleam/src/ext/setx.gleam8
2 files changed, 17 insertions, 0 deletions
diff --git a/aoc-2020-gleam/src/ext/intx.gleam b/aoc-2020-gleam/src/ext/intx.gleam
index 5c9bcc0..aec513b 100644
--- a/aoc-2020-gleam/src/ext/intx.gleam
+++ b/aoc-2020-gleam/src/ext/intx.gleam
@@ -1,6 +1,8 @@
import gleam/int
import gleam/bool
+import gleam/float
import gleam/order.{Eq, Gt, Lt}
+import ext/resultx as resx
pub fn is_between(number: Int, min: Int, and max: Int) {
min <= number && number <= max
@@ -35,3 +37,10 @@ fn do_reverse_bits(val: Int, rev: Int, length: Int) -> Int {
pub fn reverse_bits(val: Int, length: Int) -> Int {
do_reverse_bits(val, 0, length)
}
+
+pub fn sqrt(x: Int) {
+ x
+ |> int.square_root
+ |> resx.assert_unwrap
+ |> float.round
+}
diff --git a/aoc-2020-gleam/src/ext/setx.gleam b/aoc-2020-gleam/src/ext/setx.gleam
index 33ebbc3..68d185a 100644
--- a/aoc-2020-gleam/src/ext/setx.gleam
+++ b/aoc-2020-gleam/src/ext/setx.gleam
@@ -1,3 +1,4 @@
+import gleam/list
import gleam/set.{type Set}
import gleam/iterator as iter
import ext/iteratorx as iterx
@@ -8,3 +9,10 @@ pub fn count(set: Set(a), satisfying predicate: fn(a) -> Bool) -> Int {
|> iter.from_list
|> iterx.count(satisfying: predicate)
}
+
+pub fn map(set: Set(a), with fun: fn(a) -> b) -> Set(b) {
+ set
+ |> set.to_list
+ |> list.map(with: fun)
+ |> set.from_list
+}