aboutsummaryrefslogtreecommitdiff
path: root/aoc2023/src
diff options
context:
space:
mode:
authorJ.J <thechairman@thechairman.info>2023-12-04 01:01:18 -0500
committerJ.J <thechairman@thechairman.info>2023-12-04 01:01:18 -0500
commit039df9d6e00dc5a4c8d5b66b28dc216d6ee0a2f5 (patch)
tree0db09d326e030ad912a39f80c719bd6377afa658 /aoc2023/src
parentaa4626c6d3feb825f43ae53f0bed09da249f873b (diff)
downloadgleam_aoc-039df9d6e00dc5a4c8d5b66b28dc216d6ee0a2f5.tar.gz
gleam_aoc-039df9d6e00dc5a4c8d5b66b28dc216d6ee0a2f5.zip
day 4 complete
Diffstat (limited to 'aoc2023/src')
-rw-r--r--aoc2023/src/day4/solve.gleam16
1 files changed, 7 insertions, 9 deletions
diff --git a/aoc2023/src/day4/solve.gleam b/aoc2023/src/day4/solve.gleam
index 426922c..98b4d82 100644
--- a/aoc2023/src/day4/solve.gleam
+++ b/aoc2023/src/day4/solve.gleam
@@ -18,7 +18,7 @@ fn numbers_to_list(str: String) -> List(Int) {
|> result.values()
}
-fn parse_card(card: String) {
+fn parse_card(card: String) -> Card {
let assert Ok(#("Card" <> n_str, rest)) = string.split_once(card, ": ")
let assert Ok(#(winning_str, has_str)) = string.split_once(rest, " | ")
let assert Ok(n) =
@@ -32,11 +32,11 @@ fn parse_card(card: String) {
Card(number: n, winning: winning, has: has)
}
-fn double_up(n) {
+fn win_points(n) {
case n {
0 -> 0
1 -> 1
- n -> 2 * double_up(n - 1)
+ n -> 2 * win_points(n - 1)
}
}
@@ -62,20 +62,20 @@ pub fn part1(input: String) {
c
|> parse_card
|> count_wins
- |> double_up
+ |> win_points
|> int.add(acc)
},
)
- |> string.inspect
}
-fn win_more_cards(cards: List(Card), card_count: dict.Dict(Int, Int)) {
+fn win_more_cards(cards: List(String), card_count: dict.Dict(Int, Int)) {
case cards {
[] ->
card_count
|> dict.values
|> int.sum
- [card, ..rest] -> {
+ [raw_card, ..rest] -> {
+ let card = parse_card(raw_card)
let wins = count_wins(card)
case wins {
0 -> win_more_cards(rest, card_count)
@@ -108,9 +108,7 @@ pub fn part2(input: String) {
|> dict.from_list()
raw_cards
- |> list.map(parse_card)
|> win_more_cards(card_count)
- |> string.inspect
}
pub fn main() {