diff options
Diffstat (limited to 'aoc-2020-gleam/src/ext')
-rw-r--r-- | aoc-2020-gleam/src/ext/intx.gleam | 9 | ||||
-rw-r--r-- | aoc-2020-gleam/src/ext/setx.gleam | 8 |
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 +} |