diff --git a/day1/main.py b/day1/main.py index 682afa8..dc0c26c 100644 --- a/day1/main.py +++ b/day1/main.py @@ -1,5 +1,3 @@ -import string - elves = [[]] diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..8d57c60 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,2500 @@ +B X +C Y +A X +B X +B Y +B X +A Z +A Z +A X +C X +C X +B X +B X +C X +C Y +A Z +B Y +C Y +C X +B X +B X +C Y +A Z +A Z +C X +A Z +A Z +B X +A X +C Y +B Y +C X +B Y +B X +B X +A X +B Y +A Z +A Z +A Z +A Z +C X +B X +B Z +B X +C Y +B X +A Z +B X +A Z +A Z +A Z +C Y +C Y +C Y +A X +B X +B X +B Y +A Z +B Y +B X +B Y +A Z +C X +B X +A Z +B X +A Z +C Y +B X +C Y +A Z +C X +C Y +C X +C Y +C X +A X +A X +B Y +A X +A Y +A X +C Y +C Y +A Z +B Y +A Z +C Y +A Z +B X +A X +B X +C Y +A Y +B X +B X +C Y +A X +A X +C Y +B Y +A Z +A X +C Y +C X +A Z +B Y +B X +B Z +C X +B Y +C X +B Z +C X +A Z +C X +C Y +C Y +B Y +B Y +C Y +A X +B Y +A Z +B X +C X +C Y +B X +A X +C Z +A Z +B Y +A X +B X +A X +B X +B Y +B X +B Y +B Y +C Y +B X +B Y +B X +B X +A Z +C Y +B Y +A Z +C X +B X +B X +B Y +B X +C Y +A Z +A Z +C Y +C Y +A X +A Z +A Z +C X +A Z +B Y +A Z +A Y +B X +A Z +C Y +C Y +B X +A Z +B X +A X +A X +B Z +C Y +C Y +C Y +C X +C Y +B X +B X +B Y +A X +B X +B X +C X +A X +C Y +B X +A Z +B Y +A Z +B Y +B X +A Y +C Y +C X +B Z +C Y +B Y +B Y +B X +C Y +B X +C Y +A Z +A X +B X +A Z +C Y +C X +C Y +B Y +B Y +A Z +C Y +B X +B X +B X +A Z +C X +A Z +B X +A Z +B X +B X +B X +B Y +C X +A Z +B X +B X +C Y +A X +B Y +B X +A Z +A Z +B X +C Y +A Z +A Z +B X +B Y +B Y +B X +A Z +C X +A Z +A X +C Y +B Z +A Z +A Z +A Z +A X +C Y +B X +C Y +A Z +A Z +C Y +B X +A Z +A X +A Y +A Z +B Y +C Y +B Y +A Z +A Z +C Y +C Y +A Z +A Z +C X +A Z +A Z +C X +C Y +B X +B Y +B Y +B X +C Y +A X +C X +A X +B X +C Y +C Y +C X +B Z +A X +A Z +C Y +C Y +C Y +B X +B Y +A Z +A Z +C X +B X +A Z +C Y +B Z +B X +A X +A Z +A X +B X +B X +A Z +A Z +B Y +B Y +B Y +B X +A Z +B X +C X +B Y +B Z +A Z +C X +C Y +B Y +A X +C X +A Z +B X +A X +A Z +B X +C X +B X +A Z +B Y +B Z +A X +C Y +A Z +B Y +B Z +C X +B X +C Y +C Y +B X +A X +B X +B Y +A Z +C Y +A Z +C Y +A Z +A X +B Z +C X +C Y +B X +C X +B Z +B X +C Y +A Z +A Z +C Y +B X +A Z +C Y +A X +B Y +A Z +B X +A Z +A Z +C Y +B X +A Z +A Z +C Y +B Y +B Y +C X +C Y +B Y +C X +B Y +A Z +C Y +B Y +A Z +B X +B X +A Y +B X +B X +B Y +B Y +C X +C Y +A Z +C X +A Z +A Z +A Y +A Z +B Z +C Y +C Y +C Y +C X +C Y +C Y +B X +C Y +C X +B X +C Y +C X +C Y +A Z +C Y +B Z +C X +A Z +C Y +C X +B X +B Z +C Y +C Y +B X +B Y +A X +B Y +A Z +C Y +C X +C X +A X +B Y +A Z +B Y +C Y +B Y +B Y +A X +C X +A Z +C X +A Z +B X +A X +A Z +B X +A X +B X +C Y +B Y +B X +C X +C Z +A Z +B Y +B X +A X +B Y +C Y +C Y +A X +C X +B Z +A Z +A Z +B X +A Z +C X +B Z +B Z +C Y +C Y +B Y +C Y +A Z +C Y +B X +B X +B X +A Y +A Z +A Z +A Z +C Y +B Y +B Y +C Y +A Z +A Z +A Y +C Y +C Y +A Z +C X +B X +A Z +C Y +C Y +A X +A Z +C X +A X +B Z +B X +B X +A Z +C Y +B Y +A Z +A Z +C Y +A Z +A X +C X +A Z +B X +C X +C Y +B Z +C Z +A Z +A X +C X +B Y +C Y +A X +B Y +A Z +B X +B Y +A X +C X +A Z +A Z +B X +A X +A X +C Y +B Y +A Z +C X +A Z +B Y +A Y +C Y +B X +C X +B X +B X +A Z +B X +C X +C Y +A Z +C Y +A Z +B Z +B Z +A Z +A Z +A Z +A Z +C Y +C Y +A Z +A Z +B Y +A Z +A Z +A X +C Y +C Z +A X +C X +B X +B X +A Z +C Y +A Z +A Z +B X +A Z +C Y +B Z +A Z +A Z +A Y +C X +A Z +B Y +B Y +C X +B X +C X +A X +C Y +A X +C X +A Z +B X +B X +A Z +B X +A Z +A X +B X +A Z +B X +C Z +B X +C Z +A Z +B X +C Y +A Z +B X +B X +B Y +C Y +A Z +A Z +C X +C Y +A Z +C Y +A Y +C Y +B Y +B Y +B X +C X +A Z +C Y +A Z +C Y +C X +A Y +C Y +C X +A Z +C Y +B X +A Z +A Z +B Y +C X +A Z +A Z +B Y +C Z +A Z +B X +B X +B Y +A Y +A X +A Z +B Y +C X +C X +B Z +B Y +A Z +B Z +C Y +B X +A X +C X +A Z +A Z +B Y +B Y +B X +C Y +A X +C X +C Z +C X +B Y +B Y +A Z +B X +A Z +A Z +C Y +C Y +A X +C X +C Y +C X +A Z +B Z +B Y +C X +A Z +B X +B X +A X +A Z +B Z +B X +A Z +A Z +A Z +B X +C Y +B X +A X +A X +C Y +A Z +C Y +B X +A Z +B X +B Y +B Y +A Z +B X +B Y +C Y +B X +B Y +B Y +B Y +A Z +C Y +B X +B Y +C Y +C X +B X +C X +A Z +C Y +A Z +A Z +C Y +B Y +A Z +B Y +B Y +B Z +B X +B X +B X +A X +C Y +B X +B X +B X +B X +B X +A Z +A Z +A Z +A Z +A Z +C Y +B Y +C X +A Z +C Y +B X +C Y +C X +A Z +A Z +B X +C Y +C Y +A Z +B X +A Z +B Y +B Y +C Y +C Z +C Y +B Y +B X +C X +C Y +B X +B X +A X +C Y +A Z +B Y +A X +C Y +A Z +A Z +A X +A Z +A X +B Y +C Y +B X +C Y +A X +C X +C X +B Y +A Z +C Y +C Z +C Y +C Y +C X +C Y +A Z +A Z +B X +C X +A Y +B X +C X +C X +B Y +A Y +A Z +C X +C X +C Z +B X +A X +C Y +A Z +B X +A Z +B X +B X +C X +B X +B X +A X +B X +B X +C Y +B Y +A Y +B X +B Z +C X +A Z +C Y +A X +C Y +C Y +B X +B X +C Y +C Y +C Y +A Z +A Z +C X +C X +B X +C Y +C Y +B X +C Y +A Z +A Z +C Y +C X +A Z +A Z +B X +B Y +C X +B X +B Z +A Z +B X +B X +B X +C Y +A Y +A Z +B Z +B X +B X +B Y +A Z +B Y +B X +A X +A Z +C Y +B X +C Y +C Y +A Z +A Z +B Z +A Z +B X +C Y +B Y +B Z +B Y +A Z +C Y +C Y +B Y +C X +C Y +A Z +C X +A Z +B X +B Y +A Z +B Z +C X +C Y +B Y +C Y +B Y +A Z +C X +B X +A Z +B X +B X +B X +A X +C X +B Y +C X +A Z +C Y +B X +A Z +A Z +A X +B Y +A Z +A Z +C X +A Z +B Y +A X +B X +B Y +A Z +B Z +B X +A Z +C Y +A X +A Z +C Y +C X +C Y +C X +A Z +A Z +A Z +C Z +C X +C Y +A Z +C Y +C Y +C Z +C Y +C Y +A X +A X +A Z +B X +B Z +A Z +B X +A Z +A Z +C X +A Z +B Y +A Z +B Z +A Z +C X +A Z +B Z +A X +C Y +B Y +C Y +C X +C Y +C X +A Z +C Y +C Y +C Y +C Y +A Z +B Z +B Y +B X +B X +C Y +A Z +A Z +A X +C X +A Z +B X +A Z +B X +C Y +C X +A Z +B X +C Y +A X +B Y +C Y +C X +A X +C Y +A Z +B X +C X +A X +B Y +B Z +A Z +A Z +A X +A Z +C X +A Z +B X +B X +C Y +B X +B X +A Z +B X +A Z +B X +B Z +A Y +A X +A Z +C X +A Z +A Z +B X +B X +B Y +B Y +A X +C X +A Z +C X +A Y +A Z +C X +B Y +A Z +C Y +A Z +A Z +C Y +A Z +A Z +A Z +A Z +B X +C Y +B Y +A X +B X +A Z +B Y +B X +B Y +B Y +C Y +C X +C X +B Y +C Y +A Z +B X +C X +B Z +A Z +C X +B X +C Y +C X +A Z +C X +C Y +B X +C X +C Y +B Y +A X +A Z +C X +C X +B X +B X +B X +C Y +B X +B X +B Y +B Y +B X +C X +C Y +B X +B X +B X +A Y +B Z +C X +C Y +C Y +B X +B X +A Z +A X +C Y +B X +C X +B X +B Y +A X +C Z +C Y +A Z +B Y +B Y +A Z +C X +C X +A Z +B Y +A Z +B X +A Z +C Y +C Y +B Y +A Z +A Z +A Z +C Y +C Y +A X +C X +B Y +C Y +C Y +C X +A Z +A Z +C X +C Y +A X +B X +A X +B Y +A X +A Z +A Z +C Y +A Z +B X +C X +A Z +A Z +A Z +C Y +C X +A Z +C Y +C Y +B X +B X +C X +B X +C X +A Z +B X +B Z +B X +B X +C Y +A X +A Z +B X +A Z +C Y +A Z +C Z +A Z +C Z +C X +A Z +B Z +A Z +C Y +B X +C Y +A Y +C Y +C X +B X +B Y +C X +A Z +B Z +A Z +B Y +B X +A X +B X +B Z +C Y +B Y +C Y +C X +B X +C Y +C Y +A Y +C Y +B X +B X +A Z +B X +B Z +C X +A Z +C Z +C Y +A Z +A Z +B Z +C X +A Z +C Y +A Z +A Z +B X +B Y +B Z +C X +C Y +B X +A Z +B X +A Z +B X +A Z +B X +A X +C Y +B Y +C Y +B X +A Z +B X +C Y +B Y +B Y +B X +A Z +B X +C Y +A X +A Y +B X +A Z +A Z +B Y +A Z +A Z +C Y +B Y +A Z +C Y +C Y +C Y +B Y +A Z +B X +A Z +C Z +A Z +A Y +B Z +C Y +A Z +C Y +C X +B Y +A Z +A Z +B X +A X +A Z +B X +A Z +C Y +C X +A Z +A Z +C X +A X +A Z +C Y +A Z +A Z +C X +C Y +B X +B Y +B Y +C Y +C Z +B Z +C X +C Y +A X +A Z +B X +B Y +B Y +C X +B Z +B Y +B X +B Y +C X +C Y +B X +B Y +B X +C X +C Y +C X +A Z +B Z +B Z +C X +C X +B X +C X +B X +C Y +C Y +C Y +B X +C Y +C X +A X +A Z +A X +A Z +B X +B X +A Z +A X +B Y +A Z +B X +A Y +B X +C Y +A Y +A Y +B X +B Y +C Z +C Y +B Y +B Y +B X +A Z +A Z +B X +A X +B X +B Y +B X +B X +A Z +C X +A Z +A X +A Z +B Z +B X +A Z +C X +A X +B Y +C X +B X +C X +A Y +A Z +B Y +C Y +A Z +A Z +A Z +A Z +A X +A Z +B X +A Z +C X +A Z +B Y +C Y +A Z +B X +A Z +C Y +B X +C Z +B Y +C X +A Z +A X +C Y +B Y +B X +C Y +C X +A Z +B X +C Y +A Z +A Y +C Y +B X +C X +B Y +A X +C Y +B X +C Y +A Z +A Z +A Z +C Y +B Z +B X +A Z +A X +B X +C X +B X +A Z +B X +B X +B Y +B X +A Z +C X +B X +A Z +A Z +C X +A X +A X +B X +B Y +A Z +C Y +C Y +B X +B X +A X +A Z +A Z +A X +B X +A Z +B Y +C X +B X +B X +C Y +A Z +B X +A X +C Y +C Y +C Y +A Z +B Y +C Y +C Y +C X +A Z +B Y +B X +B Y +B X +C Y +C Y +A X +B X +B X +C Z +C Y +B Z +A Z +B X +B X +B Y +C Y +C Y +A Z +C X +B X +B X +A Z +B Y +B Z +B X +A Z +A Z +A Z +C X +C Y +C X +C X +A X +C X +C Y +A X +B X +A Z +A X +B Y +B X +A Z +A Z +C Y +B Y +A Z +B X +C X +A Z +A Z +C X +B X +C Y +B X +B X +C Y +A Z +A Z +A Z +A X +A X +B X +A Z +B X +A X +C Y +C X +C X +A X +A Z +C Y +B X +A Z +A Z +A X +A Z +B Y +C X +B X +C X +C X +C X +A X +C Y +A Z +C Y +B X +B X +B X +C Y +C Y +A Z +A Z +C Y +A Z +B Y +B X +A Z +B Y +C Y +A Z +C X +B X +C Y +C Y +C X +C X +A Z +B X +A Z +B X +C X +B X +C Y +C Z +C X +C Y +A Z +A Z +A Z +B Z +B X +A Z +A Z +B X +A X +B Y +B X +C Y +C Y +A Z +B X +C Y +A X +A Z +B Z +A Z +C X +B Y +B Y +A Z +A Z +C Y +B X +C Z +C X +A Z +A Z +B X +B X +A X +B Y +C X +A Z +C Y +A X +B X +A Z +B Y +B X +B Y +A Z +B Y +C X +A Z +B X +A Z +C Z +A Z +A X +B X +C Y +A Z +A Z +A Z +C X +B X +A Z +A Z +B X +A Z +A Z +B Z +A Z +C Y +B X +C Y +C Y +C X +B X +A Z +B Y +A Z +C X +B X +C Y +A Z +B X +B Y +C X +C Y +A X +C Y +B Z +C X +B X +C X +B X +A Z +B X +A Z +B Y +B X +A Z +B Z +A X +B Y +B X +C X +C X +B X +B Y +C Y +B X +C X +C X +C Y +A Z +C X +A Z +C Z +C X +B X +B X +A Z +A X +A Z +C X +A Z +B X +A Z +B Y +A Z +A Z +A Z +B Y +A Z +A X +A Z +C Y +A Z +C Y +A Z +A Z +C Y +A Z +A Z +C Y +B Y +A Z +A Z +A X +C X +B X +A Y +B Y +A Z +C Y +C Y +A Y +C Y +B Y +B X +A Z +B Y +C X +A Z +A Z +A Z +B Z +A Z +C Y +B X +B X +C Y +A Z +C Y +A Z +A X +A Z +B Z +C Y +B X +C Y +A Z +C Y +B X +C Y +B Z +B X +A Z +C Y +A Z +C Z +A Z +C X +B X +A X +A X +B Y +A X +B Z +B X +A Z +B Y +B X +A Z +A Z +A Z +C X +A Z +B Y +C Y +A Z +C X +A Y +A Z +B Z +B Z +C Y +A X +B X +B Y +C Y +C Y +A X +A Z +C X +C Y +C Y +B Y +B X +A Z +B X +A Z +A Z +B X +B Y +B X +A X +C Y +B X +B Z +A Z +A X +C X +B Y +C Z +B X +A X +B Y +A Z +C Y +C Y +A X +C Y +B X +A Z +A Z +A Z +A Y +B X +B X +A Z +C X +A Z +C Z +B Z +A Z +B X +A Z +C Y +B Y +B X +A Z +C Z +B Y +A Y +B X +B Y +A Z +C Y +B X +A Z +B X +C Y +A X +C X +A Z +A X +A X +A X +C Y +C X +A Z +A Z +C Y +B X +B Y +B X +B Y +A Z +C Y +B Y +B X +A Y +B Y +A Z +B X +B X +A Z +C X +B Y +A Z +A X +C X +C X +A Z +C Y +B Y +A Z +A Z +C Y +C X +A Z +C X +B X +C Y +C X +C Y +B X +B Y +C X +A Z +A Z +C Z +A Z +A Z +C X +C X +B X +B X +C X +B Y +A Z +C Y +C X +B Z +B X +B X +C X +B X +A Z +C Y +A X +B Y +B X +C X +B X +C Y +B X +B Y +A Z +C Z +C X +B Y +A Z +B Z +C Y +B Y +A Z +A Z +B X +B X +B Y +A Z +B X +B Z +A Z +C Y +C Y +A Z +B Z +C Y +C Y +C X +B X +B X +C Y +B X +C X +C X +A X +C Y +B Y +A Z +C Y +A X +A Z +A Z +C Y +C Y +B Y +B Y +A X +A Z +B X +A X +A X +B Y +B Y +B X +C X +A Z +A Z +B Y +C Y +C X +B Y +B Y +A X +B X +C Y +B X +A Z +A Z +C Z +A Z +B Z +B Z +B X +A X +C Y +B X +B X +C X +A Z +B X +C X +C Y +C Y +A Z +A Y +C Y +C Y +B X +A Y +B Z +A Z +A Z +C X +C Y +A Z +A Z +B X +B Y +A Z +A Y +B X +C Y +A Z +B Y +B X +B X +B X +A Z +A Z +A X +B Z +B Z +A X +C Y +C Y +B X +A Z +A X +A Z +C X +A Z +C Y +A Z +A Z +B X +A Z +C X +C Y +C X +B Y +C Y +B X +A Z +B Y +A Z +A Z +A Z +C X +C X +B Z +B Z +B X +B Y +A Z +C X +C Y +A X +C Z +A Z +B X +C X +B X +A Z +B X +A Z +C X +A X +B X +B X +A Z +B X +B X +C Z +B Z +B X +A Y +C X +B X +B Y +B Z +C Y +B X +C X +C Y +A X +B X +C X +C X +B X +A Z +C Y +B X +A X +A Z +B X +B X +C X +A X +A X +A X +C Y +A Z +C X +A Z +C X +C X +A Z +C Y +A Z +B Y +A Z +B X +C X +A Z +C X +B Z +B X +A X +C X +C X +C Y +C Y +B X +B Y +B X +C Y +C X +C Y +B Y +A Z +B Z +C Y +C Y +A Z +B X +C Y +A Z +A Z +A X +B X +A Z +B X +A X +C X +B Y +B X +A Z +C X +C X +B X +C Y +C Y +C Y +A Z +B X +A Z +B Y +A X +B X +A Z +B Y +B Y +B X +C X +A X +B Y +A Z +B X +C X +B X +A Z +C Y +A Z +A Z +B X +B X +A X +A X +C Z +C X +B Z +C Y +A Z +C Y +C Y +A Z +B X +C Z +C X +B X +C X +A Z +C Y +C Y +B X +A Z +C X +B X +B X +A X +C Y +B X +A Z +A Z +B X +B X +B Y +A Z +A Z +B Y +B X +C X +B X +A X +A Z +A X +B X +B X +C Y +A Z +A X +C Y +B X +C X +C X +C X +C X +B Z +B Y +C X +A X +C Y +C Y +C X +B X +B Y +B X +B X +B X +C X +B X +B X +C Y +C Z +B X +C Z +A Z +A Z +C Y +B Z +B Y +A Z +A Y +C Y +B X +C Y +A Z +B Y +C Y +C Y +A Z +A Z +C Z +A X +A Y +B Y +A Z +A Z +A X +C Y +B Y +A Z +A Z +B Y +C Y +C Y +A Z +A Z +B Y +A Z +B X +A X +A Z +B Y +C Y +C X +A X +C X +C Y +B X +B X +A Z +C Y +B X +B Y +C Y +A X +B Z +B Y +C Y +C Y +A Z +A Z +A X +C Y +A Z +B X +A Z +C X +C X +C Y +C X +B X +C X +A Z +B X +B X +B Y +B X +C Y +A Z +B Y +B X +C X +C Y +C Y +A Z +A Z +B Z +B X +A Z +C Y +A Z +B X +A Z +A Z +B X +B Y +A Z +B Z +C Y +A X +C Y +C Y +B Y +B Y +B X +C X +A Z +B Z +A X +C Y +B X +A Z +A Z +C Y +B X +C X +B X +A Z +C Y +A Z +B Z +A Z +A Z +A Z +B X +C Y +C Y +C Y +A Y +C X +C Y +B Y +A Z +C Y +A X +A X +C Y +A X +B Y +C X +C Y +A Z +C Y +A X +B Y +C Y +B Y +B X +B X +C Y +A Z +C X +A Z +C Y +A Z +C Z +A Z +C Y +A Z +C X +A X +C Y +B Y +C Y +C X +A Y +A Z +C Z +A Z \ No newline at end of file diff --git a/day2/main.py b/day2/main.py new file mode 100644 index 0000000..3ac99cc --- /dev/null +++ b/day2/main.py @@ -0,0 +1,60 @@ +rounds = [] + +input_file = open("input.txt", "r") +lines = input_file.readlines() + +for line in lines: + moves = line.split(" ") + + rounds.append([]) + + rounds[-1].append(moves[0]) + rounds[-1].append(moves[1].replace("\n", "")) + + +move_score = { + "X": 1, # rock + "Y": 2, # paper + "Z": 3, # scissors +} + +OPPONENT_ROCK = "A" +OPPONENT_PAPER = "B" +OPPONENT_SCISSORS = "C" +MY_ROCK = "X" +MY_PAPER = "Y" +MY_SCISSORS = "Z" + + +def opponent_did_win(opponent_move, my_move): + if opponent_move == OPPONENT_ROCK: + return my_move == MY_SCISSORS + elif opponent_move == OPPONENT_PAPER: + return my_move == MY_ROCK + elif opponent_move == OPPONENT_SCISSORS: + return my_move == MY_PAPER + + +def opponent_did_tie(opponent_move, my_move): + if opponent_move == OPPONENT_ROCK: + return my_move == MY_ROCK + elif opponent_move == OPPONENT_PAPER: + return my_move == MY_PAPER + elif opponent_move == OPPONENT_SCISSORS: + return my_move == MY_SCISSORS + + +total_score = 0 +for _round in rounds: + opponent_move = _round[0] + my_move = _round[1] + + # always add your move to the total score + total_score += move_score[my_move] + + if opponent_did_tie(opponent_move, my_move): + total_score += 3 + elif not opponent_did_win(opponent_move, my_move): + total_score += 6 + +print(total_score)