diff --git a/2022/input/day_2.txt b/2022/input/day_2.txt new file mode 100644 index 0000000..b4911d6 --- /dev/null +++ b/2022/input/day_2.txt @@ -0,0 +1,2500 @@ +C Z +C Z +C Y +C Z +C Z +C Z +A X +A X +C X +C X +A Z +B X +A X +C Z +A Z +C Z +C Z +C Z +A Z +A X +C Z +C Z +A Y +A Y +A X +C Z +A Y +A Y +C Z +C Y +C Y +C Z +A X +A X +A Y +C Z +A Y +A Y +A X +A Z +C Z +A X +C X +A Y +B Y +B Y +C Z +A Z +B X +A Z +B Z +B Z +A Y +C Z +C Z +C X +B Z +C Z +A Y +C Z +A X +C X +A X +C Z +A Y +B X +A Y +C Z +B Y +C Z +C Z +A Y +A Y +A Y +C Z +B Y +A X +A Y +C Z +A Y +C Z +C Z +C Z +B X +A Y +B X +C Z +C Z +B Y +A X +B Z +C Z +A X +C Z +B Y +C Z +A Y +A Y +A Z +C Z +A Y +B Z +A Z +A Y +A X +A Y +A X +A Y +A X +C Z +A Y +B Z +B Y +A X +C Z +A X +B Z +A X +A Y +C Z +A Z +A X +C X +A Y +A X +A X +A X +B Y +B Y +A X +C Z +C Z +A Y +A X +A Z +C Z +B Y +B Z +C X +C Z +A X +A Y +C Z +A X +C Y +B X +B Y +A Y +A Z +A X +A X +C Y +C Y +A X +A Z +B Z +C Y +A Z +A X +A Y +C X +A X +C Z +C Z +A Z +B Y +C Z +A Z +C Z +B Z +C Z +C Y +A X +C Z +C Z +A Z +C Z +A X +C Y +A X +C Z +A Z +A Y +C Y +B Z +C Y +C Y +A Z +A Y +C Z +C Z +C Z +C Z +A Y +A X +C Z +A Z +C Z +A Z +C Z +B Y +C X +A Y +C Z +A X +A X +C Z +C X +C X +C Z +A X +C X +A X +B X +A Y +C Z +C Z +A Y +C Y +C Z +A X +A X +A Z +C X +C Z +A Y +C Z +C Z +C Z +C Z +A Y +C Z +C Z +C Z +A Y +A X +A Y +C Y +A Y +A Y +A Y +B Y +C Y +B X +C X +A Y +C X +C Y +B X +A Z +C Z +A X +B X +C Z +C Z +A Y +A Y +A Y +A X +C Z +C Z +C Z +A X +A Y +A Y +A Z +B Y +B Y +A Z +A Y +A Y +C X +A Y +A X +A X +A Z +A X +B X +C Z +B Y +A Z +C Z +C Z +C Z +B Y +A Y +A Y +A X +B Z +C Z +C Y +A X +A Y +A Y +C X +A X +B Y +A X +A Y +C X +A X +A Y +C Z +A X +A X +C Z +C Z +C Z +C Z +A Y +A Y +C Z +A Y +A X +A Y +B Z +A X +C Y +C Z +B X +A X +C Z +A Z +C Z +A Z +B Y +A X +C Z +C X +C Z +C Z +C Z +C Z +A X +C Z +C X +C X +C X +C Z +A Z +C Z +C Z +C Z +C Y +A X +C Y +A X +A Z +A X +C Z +A X +A Y +B Y +C Z +A Y +C Z +C Z +B Z +A Z +B Y +A X +C Z +A Z +C Z +C Z +A X +C Z +A X +A Z +A X +A Z +B Z +B Z +C Z +C Z +A X +C Z +C Z +C Z +A Y +A X +A X +C X +A Y +C Z +B Z +C Z +C X +C Z +C Z +C Y +A X +A X +A X +B X +C Z +C Z +A X +C Z +C Z +A Y +B Z +A Z +A Y +A X +C Z +A Y +A X +C Z +C X +A Y +A Y +A Z +C X +A Y +A Y +C Z +A Y +C X +A Y +C X +A X +A X +A X +A Y +C Y +C Z +B Z +A X +C Z +A Y +C Z +C Z +B Z +A X +A Z +A Y +B Y +B X +C Z +B Y +C Z +A Y +C Z +B X +B Y +C Y +A Y +B X +C Z +A Y +C Z +A Y +A X +B X +B Y +A Y +C X +A Y +A Y +A X +C Z +A X +B Y +B X +A Y +B Z +C X +A Z +A Z +B Y +A X +A Z +A Y +B Z +C Z +A X +A Z +A X +A Z +A Y +C Z +C Z +A Z +C Z +C Y +A Y +C Z +A Y +B Z +C Z +A X +C Z +C Y +C Z +C Z +A X +A Y +A X +C Z +A X +B X +A Z +C Y +A Y +B X +A X +A X +C Y +B Z +A X +A Y +B X +B Y +A X +B X +A Y +A X +A Y +A X +A X +A Z +C Z +A X +C Z +B Y +A X +A Z +A Z +B Y +A Y +C Z +C X +C Z +C Z +C Z +B X +A Y +A X +A X +B Z +C Z +A X +A X +C X +A X +A X +A Y +B X +A Z +A Z +C Z +C Z +B Z +C Z +B Y +C Z +C Z +A Y +B Z +B Y +C Z +A X +A Z +A X +C Z +C Z +A Y +B X +A X +B Z +A Y +C Z +A Z +C Z +A Z +C Z +A X +A Y +C Z +A Y +A X +C Z +A X +C Z +B X +B Y +C Y +C X +A Y +C Z +A Y +A Y +B Y +B Y +C X +A X +C Z +B X +A Y +A Y +A Y +A Y +B Y +B X +A X +B Z +A X +B Z +A X +C Z +B X +C Z +C Y +C Z +B Y +A Z +C Z +C Z +A Y +C Z +B X +A Y +B Z +A Y +A Y +A X +A Y +C Z +A Z +A Y +A X +B Z +B Y +A X +C Z +A Y +A Y +A Z +A X +C Y +C Z +C Z +C Z +A Y +A X +A X +C Z +C Z +A Y +A Y +A X +B Z +C X +B Z +C Z +C X +A X +B Y +C Z +A X +C Z +C Z +C Z +A Z +A X +B Z +C Y +A X +A X +C Z +C Z +A Y +B X +C Y +C X +B Z +C Z +A Z +A Z +A X +A Y +C Z +C Z +A X +A Y +A Z +A Y +A Z +B X +B Y +C Z +A Z +B Z +A Y +C Z +B Z +C Y +C Z +A Y +A Y +B X +B Y +C Z +B X +B X +A Z +A X +A Y +A X +C Z +C Y +C Z +A X +A X +C Z +C Z +A Z +C Z +C Z +A Y +A X +C Z +A Z +A Y +A Y +A X +A X +A Y +A X +A Y +C Z +A X +A X +A Y +C Z +A Y +B Y +A X +A Z +A Y +C Z +A Y +A Z +C Z +B Y +A Z +C Z +A Z +A X +A X +B Y +C Z +C Z +A Z +C Z +A Y +C Z +B X +A Z +A Y +A X +A X +A X +B Y +A X +A Z +A X +C X +A X +A Z +C Z +A Y +C Z +A X +A Y +A X +C Z +A Y +B Z +B Y +A X +A X +A Y +C Z +C Z +C Z +C Z +B X +C Y +C Z +A Y +A X +A X +C Z +A X +C Z +C Z +A Y +C Z +A X +A Y +C Z +B Y +C Z +C Z +A Z +C Y +A Z +A X +A X +A Y +C X +B Z +C Z +C X +C Z +B Y +C Z +A Y +C Y +C Z +A Z +C Z +A Y +B X +A Y +A Y +A Y +C Y +B X +A X +B X +A Y +C Z +C Z +B Z +A Z +C Z +A Z +B Y +A Y +C Z +C Z +A X +B Y +B Z +A X +C Z +A X +A Y +A Y +A Z +B X +A Y +A X +A Z +C Z +C Z +A X +C Z +C X +C Z +A X +A X +A X +A Y +C Z +B Z +A X +B Z +C Y +A X +B Z +A Y +A X +C Z +C Z +C Z +B Y +C Z +C Y +B Y +A Y +A Y +A X +C X +A X +B X +B Y +A Y +A X +B X +A X +A X +C Z +C Y +A Y +A X +C Z +C Y +C Z +C Z +A Z +A Y +A Y +C X +A X +C Z +A Y +C Z +A X +B Y +A X +B X +C Z +C Z +A Z +A Y +C Z +C Z +C Z +B Z +A Y +C Z +A X +A Z +A Y +C Z +A Z +A Z +A X +A Y +C Z +C Z +A Y +C Y +A Y +B Z +C Z +C Y +C Z +A X +C Z +A Y +A Z +A X +C Z +A X +A X +A Y +C Z +A X +A X +A X +C X +C Z +C Y +B Z +A Y +A Y +C Z +C Z +A Y +C Z +C Z +C Z +C Z +C Z +A Y +B X +B Z +A X +A Z +B Y +C Z +C Z +A Y +A X +A Y +A Z +C Z +C Z +A Y +C Z +A X +C Y +C Z +A X +A X +C Z +A X +C Z +A X +A X +C Z +C X +B Y +C Z +A Y +C Y +A Y +A Y +C Z +C Z +C Y +A X +A X +C X +A X +A Z +A X +A Y +C Z +C Z +A X +B X +B Z +C Z +C Z +C Z +C X +C Y +A X +B Z +A X +A X +B Y +B X +A Z +A X +A Y +C Z +A Y +C Z +A X +A X +B Z +C Z +C X +A X +A Y +C Z +C Y +C Z +A Y +C Z +A Y +A Y +A Z +A Y +C Z +A Y +C Z +B Y +C Z +A X +C Z +C Y +A Y +A Y +A Y +C Y +A Z +A Y +A Y +C Z +B X +B Z +A X +C Z +A Y +C Z +A Z +A Z +A Y +A X +C Y +A X +A Y +C Z +A X +A Y +A Y +C Z +A X +C Z +B X +A Y +A X +C Z +C Z +C Z +C Z +B Y +C Y +A X +C Z +A X +B X +B Y +A Y +A X +A X +A X +C Y +A X +A X +A Y +C X +A X +B X +A Z +C Z +A Z +A X +C Z +C Z +B Y +A Y +A Y +C Z +C Z +A Y +B Y +C Z +A Y +A X +A X +C Z +C Z +C Z +A Z +A Z +A X +C Z +A X +A X +A X +B Z +B X +C Z +A X +C Z +C Z +A X +C Z +A Y +B Z +B Z +A X +C X +C Y +A Y +B Y +A X +C Z +A Y +C Z +C Z +B Z +C Z +C Y +A Y +C X +A X +C Y +C Y +C Z +A Y +B Y +C Z +C Y +A X +C X +A Y +B X +C Y +C X +C Y +C Z +C Z +B Z +A Z +A X +A X +C Z +A X +B Y +C Y +B Z +A Y +C Z +A X +A Y +A Y +C Z +B Z +A X +A X +A Y +A Y +A Y +A X +C Z +A Y +A Y +C Y +C Z +A Y +A X +C Y +A X +A Y +A X +C Z +A X +A Z +C Z +A Y +A Y +C X +A X +C Z +A Y +A Y +A Y +A Z +A X +A Z +C Z +C Z +A X +C X +A Z +A Z +C Z +C Z +C Y +B X +C Z +A Y +A Y +B X +B Y +A Y +B X +A X +C X +B Y +B X +A X +C Y +B X +A X +C Y +B X +B Y +C Z +A X +A Y +A X +C Y +C Y +C Z +A Y +A X +B Z +A Y +C Z +A Y +B Z +B Y +B X +B Z +C X +A Z +C Z +C Z +B Y +C Z +C Z +A X +A Y +A X +A Y +A Y +B X +A X +A X +A Z +B Y +A Y +B Y +A Y +A X +C Z +A X +B Y +A Y +C Z +A Y +A Y +A Y +C Z +B Z +C Z +A X +C Z +A Z +A Y +A Z +C Z +C Z +A Y +A Y +A X +A X +C Z +C Z +C X +C Z +B Y +C Z +A X +C Z +A Z +C X +C Y +B Z +C Z +C Y +A Y +A X +C Z +A Z +C Z +B Z +A Y +A Y +A Y +C X +A Y +C Z +A X +A X +A X +A Y +C Z +C Z +C Y +A Y +A Z +A Y +A Y +C Y +A X +C Z +A Y +C Z +C Z +C Z +C Z +C Z +B Z +C Z +C Z +A X +C Z +A Y +A Y +B Y +C Z +B X +B Y +A Y +A X +C X +A Z +C Z +C Z +C Y +A Y +C Y +C Z +B X +C Z +A X +C Z +A Y +A X +A X +A Y +B Y +C Y +C Z +C Z +B Z +C Z +A Z +A Y +A X +C Z +A Y +C Z +C Z +C Y +A Y +C Z +B Y +A Y +A Y +C X +C Z +A Z +C X +A X +A Y +C Z +A Y +A Y +C X +A X +C Z +B Y +A Y +A Z +A Z +A Y +A X +A Y +A X +C X +B X +C Y +B Z +A Z +B X +A Y +B Y +A X +C Z +C Z +A Y +C Y +B Z +B Y +C Y +A Z +B X +A X +A X +A X +C X +B X +C Y +A X +C Z +B Z +C Y +B X +C Z +C X +A Y +A X +C Y +B Z +C Z +B X +B Y +A X +A Y +A Y +A Y +B Y +A X +C X +C Y +A X +A X +C Z +A X +C Z +C Z +A X +C Z +C Z +C Z +A X +C Z +C Y +C Z +A Z +A Y +A Y +C Z +C X +C Z +C Z +C X +A X +A Y +B X +C Y +B Z +B Y +B Y +C Z +C Z +A X +C Z +A Y +C Z +A X +B Y +A Y +A X +C Z +C Y +C Z +A Y +A X +B Z +B Z +A Z +A Y +A X +C Z +B Z +C X +A Y +C Z +C Z +A Z +A Z +C Z +B X +A Y +A Y +B X +B Y +A Y +C Y +C Z +C Z +C X +A Y +A Y +A Z +C Y +B X +B X +A Y +C Z +C Z +A Y +A Y +A Z +C Z +B Y +A Y +A Z +A X +C Z +C Z +B Y +C Z +C Z +A Y +C Z +B Z +B Z +C Z +B X +A Z +A Z +A Y +C Y +B Z +C Z +C Z +A X +A X +A X +A Y +A X +A Y +C Z +A X +C Z +C Z +C Z +C Z +A X +A Y +C Z +A X +A Y +C Z +A Y +A Z +B Y +C Z +A Y +C Z +A Y +B X +C Z +A Y +C Z +C X +C Z +A Y +B Z +A X +C Z +C Y +A Y +B Z +A Y +B X +A Y +A X +A X +A Y +A X +A Y +C Z +A Y +C Y +A X +A Z +C Z +A Z +A Y +A X +A Y +A X +A Y +A X +B X +A X +A X +C Y +C Z +A X +A Y +A X +A Y +C Z +C Z +A X +A X +B Z +A Y +C Z +A Y +B Y +C Z +C Z +C Z +C Z +C Z +C Z +C Z +C Z +A Y +C X +B Y +A X +C Z +A X +A Z +A Y +B Y +C X +C Z +C X +B Y +C Z +A Y +B Z +C Z +C Z +A Y +A X +A Z +C Z +C Y +A Y +A X +A X +A Y +C Z +C Z +B Y +B Y +C Z +A X +A Y +B X +B Y +C Z +A Z +C Z +A X +B Y +C Z +C Z +A X +A Z +A Y +C Z +B Y +B Z +C Y +B X +C Z +A X +A Y +C Z +C Z +C Y +A Y +A Y +A Y +C X +B Y +A Y +C Z +C Z +A X +C Z +A X +C Z +B Z +C Z +A Y +A Y +C Z +C Z +C Z +A Y +A Y +B Z +C Z +A X +C Y +A X +A Y +A X +A X +C Z +C Z +C Z +A Y +C X +B Z +C Z +C Y +B X +A Y +A Y +A X +A X +B Y +C Z +A Y +A Z +B Z +A Z +A X +A Z +A X +A X +C Z +C X +C Z +B Y +C X +C Z +C Z +A X +A X +A Y +A Z +A Z +A Y +C Z +A Z +A X +A Y +A Y +A Z +A Y +A X +B X +A Y +A Y +C Z +C Z +C Y +A X +B X +B Y +A Y +C Z +A X +A Y +B Z +A Y +C X +B X +C Z +A Y +C X +C Y +A Y +A X +A X +C Z +C Y +A Z +A X +C Z +C Z +A Z +A X +C Y +C Z +A Y +A Y +C Z +C Z +C Z +C Z +A Y +C Z +C Z +C Z +B Z +A Y +C Z +A X +C Z +A X +A Y +C Y +C Z +B Y +A X +A X +C Z +C Z +A Y +A X +C Z +A Y +C Z +C Z +A X +A Z +A Y +C Z +A Y +C Z +B Y +C X +C Z +A X +A Y +C Y +A X +A Y +A Y +A Z +A Y +C X +A Y +B Y +C Z +C Y +B Z +A Y +B X +A Y +C Z +A X +A X +C Z +C Z +A X +A X +A Z +C Z +C Z +A Z +A X +B Y +B Z +B Z +C Z +A X +C Z +C Z +A Y +C Z +C Z +B Z +A X +B Z +C Z +C Y +A Z +C Z +A Y +A X +B X +A Z +C Z +A Z +B X +A Y +A Y +B Z +C Z +B Z +C Z +A X +C Y +A Y +B Y +B Y +C Z +C Y +A Y +A Z +C Z +A X +A Y +A Z +A X +A X +C X +C Z +C Z +A Z +C Z +A X +C Z +C Z +A X +A X +A Z +A X +A X +C X +A X +C Z +C Z +C Z +A Z +A X +B X +A Y +A X +B Z +B Z +C X +A Y +A X +B Z +C Z +A Z +C X +A Y +A X +B Z +C Z +C Z +B X +B X +A X +A X +A Y +A Z +A X +A X +A Y +B Z +C X +A X +A Y +B Z +C Z +A X +A Z +C X +C X +B Z +B Y +C Y +A Y +B Z +C Z +A X +C Z +A Y +C Z +C Z +A Y +C Y +A X +A Y +B Y +C Y +C Y +A X +A Y +C Y +A Z +C Z +A Z +B Z +A X +A Y +C Z +A Y +B Y +A X +C Z +A X +C Y +A Y +A X +C Z +A X +C Y +B X +A X +A Y +A Y +C X +C Z +A X +A Z +A Y +C Z +A Y +C Z +B X +C Z +C Z +A X +A X +A X +A Y +C Z +A Y +A Y +A Z +A X +C Y +C Z +A Z +A Y +C Z +C Z +B X +A X +C Y +A X +A X +B Y +B X +C Z +A X +C Y +A Y +C Z +B Y +C Z +A Y +A X +A Y +C Z +A Z +C Z +B Z +A Y +C Z +A Z +A X +A X +C Z +C Z +A X +A X +A Y +C X +A X +B Z +B Z +B Z +C Z +C Z +A X +C Z +C X +A X +C Z +A Y +C X +C Z +B Y +B Z +C Z +A X +C X +A X +C Y +A Y +B Y +C Z +A Z +C X +A Z +A X +A Z +A X +A Z +C Y +C Z +A Y +A Y +A X +B Y +C Z +B Y +C Y +C Z +A Z +C Z +A Y +B Z +C Z +A Z +C Y +A Z +A Z +A X +A X +C Y +C Z +A Z +A Y +B Y +A Z +C Z +C Z +B X +C Z +A X +C Z +B Z +A Y +A X +B Y +C X +C Z +A Z +B X +C Z +C Z +B Y +B Z +A Y +A Y +A X +C Z +A Z +C Z +A X +C Z +C Z +A X +A X +A Y +C Z +B Y +A X +A Y +A X +C Z +A Y +A Y +A Y +C X +C Z +A X +C Z +B X +A X +A Z +C Z +A Y +A Z +A Z +A X +B Z +A X +C Z +A Y +B X +C Z +B Y +B X +C Z +A X +A Y +A X +A Z +A Y +A X +C Y +C Z +B X +C Y +C Z +B X +A Z +C Z +C Z +B Y +B Z +C Z +C Z +C Z +C Z +B Z +B Y +A Y +C Z +C Z +B Y +A Y +C Z +A Y +C Z +C Z +C Z +A Y +B X +A Z +B Y +C Z +B Y +C Z +A Y +B Z +A X +B Y +B Y +A Y +B X +C Z +A Z +C Y +A X +C Z +C Z +A X +C Z +A Y +A X +C Z +A X +A Z +B Z +C Z +A Y +A Y +A X +A Y +C Z +B Z +C Z +C Z +C Z +A Y +C Y +A Y +A Y +A X +B Y +A Y +A Y +B Z +B Y +C Z +A Y +A X +A Y +A Z +A Y +C Y +C Z +B Y +A Y +A X +C X +A Y +C Z +A Z +C Z +A X +C Y +A Y +B Y +B Z +A Y +C X +B Y +A Z +A X +A X +A X +A X +A Y +C Y +A Y +A X +C Z +A Y +A X +C Z +B Y +B X +C Z +B Z +A Y +A X +C Z +C Z +A X +C Z +A Y +C Z +C Z +C Z +C X +A Y +A Y +C Z +C Z +A X +A X +A Z +A Y +C Z +A Z +C Z +C Z +A X +A Y +A X +C Y +A Y +A X +A Y +A X +C Z +C Y +C Z +C Y +B Y +A X +A Y +A Y +B Z +A Z +C X +C Z +C Z +A Y +B X +C Z +A X +A Y +A Y +A X +A X +C X +B Y +B X +A X +C Z +A X +A Y +C Y +A X +A X +B Z +A X +C Z +A X +A Y +A Y +C Z +A Y +A Y +C Z +A X +A Y +B Y +C Z +C X +C X +B X +A Z +A Y +A X +B X +A Y +A Z +C Z +A Z +C X +A Y +C Z +A Y +A Y +A X +C Z +C Z +C Z +C Z +B X +A X +A Z +A X +A Y +A X +A X +B Z +C Z +C X +B Y +A Y +A X +C X +C Z +B Z +A Y +B Z +A X +A X +B Y +A Z +A Y +A Y +B X +A Y +A Y +A Y +C Z +C Z +B Z +A Y +A X +A Y +C Z +C Z +C Z +A Z +A Y +B X +A Y +A Y +A X +A X +C Z +B Z +C Z +C Z +C Z +A Y +C Y +A Y +C Z +C Z +B X +C Z +C Z +C X +A Y +C Z +A Y +C Z +A Y diff --git a/2022/src/days/day_2.gleam b/2022/src/days/day_2.gleam new file mode 100644 index 0000000..dde9773 --- /dev/null +++ b/2022/src/days/day_2.gleam @@ -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 + } +}