aboutsummaryrefslogtreecommitdiff
path: root/aoc-2020-gleam
diff options
context:
space:
mode:
authorTomasz Chojnacki <tomaszchojnacki2001@gmail.com>2023-02-21 22:14:11 +0100
committerTomasz Chojnacki <tomaszchojnacki2001@gmail.com>2023-02-21 22:14:11 +0100
commit6eaf758850feebd8cfc97c3ead2de2625465a326 (patch)
treec77a254f832fbfc2299cf74133891df69d8f0397 /aoc-2020-gleam
parent16509ecd4f31ef421a464a98c8e0ea73bb5cb111 (diff)
downloadgleam_aoc2020-6eaf758850feebd8cfc97c3ead2de2625465a326.tar.gz
gleam_aoc2020-6eaf758850feebd8cfc97c3ead2de2625465a326.zip
Minor refactorings
Diffstat (limited to 'aoc-2020-gleam')
-rw-r--r--aoc-2020-gleam/src/days/day01.gleam2
-rw-r--r--aoc-2020-gleam/src/days/day04.gleam7
-rw-r--r--aoc-2020-gleam/src/ext/intx.gleam8
-rw-r--r--aoc-2020-gleam/src/util/input_util.gleam12
4 files changed, 12 insertions, 17 deletions
diff --git a/aoc-2020-gleam/src/days/day01.gleam b/aoc-2020-gleam/src/days/day01.gleam
index 6e75826..ac46581 100644
--- a/aoc-2020-gleam/src/days/day01.gleam
+++ b/aoc-2020-gleam/src/days/day01.gleam
@@ -10,7 +10,7 @@ fn solve(numbers: List(Int), n: Int) -> Int {
|> list.combinations(by: n)
|> list.find(one_that: fn(p) { int.sum(p) == 2020 })
|> result.map(with: int.product)
- |> resultx.force_unwrap()
+ |> resultx.force_unwrap
}
fn part1(numbers: List(Int)) -> Int {
diff --git a/aoc-2020-gleam/src/days/day04.gleam b/aoc-2020-gleam/src/days/day04.gleam
index 53abb0c..fa165ae 100644
--- a/aoc-2020-gleam/src/days/day04.gleam
+++ b/aoc-2020-gleam/src/days/day04.gleam
@@ -109,8 +109,11 @@ fn is_valid2(passport: Passport) -> Bool {
let #(key, parser) = validator
passport.fields
|> map.get(key)
- |> resultx.force_unwrap
- |> p.parse_entire(with: parser)
+ |> result.then(apply: fn(value) {
+ value
+ |> p.parse_entire(with: parser)
+ |> result.replace_error(Nil)
+ })
|> result.is_ok
},
)
diff --git a/aoc-2020-gleam/src/ext/intx.gleam b/aoc-2020-gleam/src/ext/intx.gleam
deleted file mode 100644
index 3cfe144..0000000
--- a/aoc-2020-gleam/src/ext/intx.gleam
+++ /dev/null
@@ -1,8 +0,0 @@
-import gleam/int
-import ext/resultx
-
-pub fn force_parse(string: String) -> Int {
- string
- |> int.parse()
- |> resultx.force_unwrap()
-}
diff --git a/aoc-2020-gleam/src/util/input_util.gleam b/aoc-2020-gleam/src/util/input_util.gleam
index 2589a7d..fbe2d17 100644
--- a/aoc-2020-gleam/src/util/input_util.gleam
+++ b/aoc-2020-gleam/src/util/input_util.gleam
@@ -1,20 +1,20 @@
+import gleam/int
import gleam/list
import gleam/string
import gleam/function
import gleam/bool
import gleam/erlang/file
-import ext/intx
import ext/resultx
pub fn read_text(filename: String) -> String {
"data/" <> filename <> ".txt"
- |> file.read()
- |> resultx.force_unwrap()
+ |> file.read
+ |> resultx.force_unwrap
}
pub fn read_lines(filename: String) -> List(String) {
filename
- |> read_text()
+ |> read_text
|> string.split(on: "\n")
|> list.map(with: string.trim)
|> list.filter(for: function.compose(string.is_empty, bool.negate))
@@ -22,6 +22,6 @@ pub fn read_lines(filename: String) -> List(String) {
pub fn read_numbers(filename: String) -> List(Int) {
filename
- |> read_lines()
- |> list.map(with: intx.force_parse)
+ |> read_lines
+ |> list.map(with: function.compose(int.parse, resultx.force_unwrap))
}