mirror of
https://github.com/wezm/advent-of-code.git
synced 2024-12-18 10:19:55 +00:00
Day 2 part 1
This commit is contained in:
parent
f9db17b2e3
commit
25f3395215
2 changed files with 2563 additions and 0 deletions
2500
2022/input/day_2.txt
Normal file
2500
2022/input/day_2.txt
Normal file
File diff suppressed because it is too large
Load diff
63
2022/src/days/day_2.gleam
Normal file
63
2022/src/days/day_2.gleam
Normal file
|
@ -0,0 +1,63 @@
|
|||
import gleam/int
|
||||
import gleam/list
|
||||
import gleam/string
|
||||
|
||||
type Hand {
|
||||
Rock
|
||||
Paper
|
||||
Scissors
|
||||
}
|
||||
|
||||
type Game =
|
||||
#(Hand, Hand)
|
||||
|
||||
pub fn pt_1(input: String) -> Int {
|
||||
string.split(input, on: "\n")
|
||||
|> list.map(parse_line)
|
||||
|> list.map(score_game)
|
||||
|> int.sum
|
||||
}
|
||||
|
||||
pub fn pt_2(_input: String) -> Int {
|
||||
todo
|
||||
}
|
||||
|
||||
fn parse_line(line: String) -> Game {
|
||||
assert [a, b] = string.split(line, on: " ")
|
||||
#(to_hand(a), to_hand(b))
|
||||
}
|
||||
|
||||
fn to_hand(raw: String) -> Hand {
|
||||
case raw {
|
||||
"A" -> Rock
|
||||
"B" -> Paper
|
||||
"C" -> Scissors
|
||||
"X" -> Rock
|
||||
"Y" -> Paper
|
||||
"Z" -> Scissors
|
||||
}
|
||||
}
|
||||
|
||||
fn score_game(game: Game) -> Int {
|
||||
let score = case game {
|
||||
// (them, me)
|
||||
#(Rock, Paper) -> 6
|
||||
#(Rock, Scissors) -> 0
|
||||
#(Paper, Rock) -> 0
|
||||
#(Paper, Scissors) -> 6
|
||||
#(Scissors, Rock) -> 6
|
||||
#(Scissors, Paper) -> 0
|
||||
#(Rock, Rock) -> 3
|
||||
#(Paper, Paper) -> 3
|
||||
#(Scissors, Scissors) -> 3
|
||||
}
|
||||
score + score_hand(game.1)
|
||||
}
|
||||
|
||||
fn score_hand(hand: Hand) -> Int {
|
||||
case hand {
|
||||
Rock -> 1
|
||||
Paper -> 2
|
||||
Scissors -> 3
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue