From cf4757ad43823aafa4c6c0547265359e961245a8 Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Fri, 2 Dec 2022 10:18:18 +0100 Subject: Added day2 --- day2/__init__.py | 98 +++ day2/example.txt | 3 + day2/input.txt | 2500 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2601 insertions(+) create mode 100644 day2/__init__.py create mode 100644 day2/example.txt create mode 100644 day2/input.txt (limited to 'day2') diff --git a/day2/__init__.py b/day2/__init__.py new file mode 100644 index 0000000..19faab9 --- /dev/null +++ b/day2/__init__.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +from abc import ABC +from enum import Enum +from typing import Iterator + +from aoc import BaseAssignment + + +class TheirMove(Enum): + Rock = "A" + Paper = "B" + Scissors = "C" + + +class YourMove(Enum): + Rock = "X" + Paper = "Y" + Scissors = "Z" + + +class GameOutcome(Enum): + Lose = "X" + Draw = "Y" + Win = "Z" + + +class Assignment(BaseAssignment, ABC): + def calculate_score(self, opponent: TheirMove, you: YourMove) -> int: + game_result_score = { + TheirMove.Rock: { + YourMove.Rock: 3, + YourMove.Paper: 6, + YourMove.Scissors: 0, + }, + TheirMove.Paper: { + YourMove.Rock: 0, + YourMove.Paper: 3, + YourMove.Scissors: 6, + }, + TheirMove.Scissors: { + YourMove.Rock: 6, + YourMove.Paper: 0, + YourMove.Scissors: 3, + }, + } + + you_thrown_score = { + YourMove.Rock: 1, + YourMove.Paper: 2, + YourMove.Scissors: 3, + } + + return game_result_score[opponent][you] + you_thrown_score[you] + + def play_game(self, col1: str, col2: str) -> int: + raise NotImplementedError() + + def run(self, input: Iterator) -> int: + return sum([self.play_game(*game.split(" ")) for game in input]) + + +class AssignmentOne(Assignment): + example_result = 15 + + def play_game(self, col1: str, col2: str) -> int: + return self.calculate_score(TheirMove(col1), YourMove(col2)) + + +class AssignmentTwo(Assignment): + example_result = 12 + + def calculate_move( + self, opponent: TheirMove, game_outcome: GameOutcome + ) -> YourMove: + next_move = { + TheirMove.Rock: { + GameOutcome.Lose: YourMove.Scissors, + GameOutcome.Draw: YourMove.Rock, + GameOutcome.Win: YourMove.Paper, + }, + TheirMove.Paper: { + GameOutcome.Lose: YourMove.Rock, + GameOutcome.Draw: YourMove.Paper, + GameOutcome.Win: YourMove.Scissors, + }, + TheirMove.Scissors: { + GameOutcome.Lose: YourMove.Paper, + GameOutcome.Draw: YourMove.Scissors, + GameOutcome.Win: YourMove.Rock, + }, + } + + return next_move[opponent][game_outcome] + + def play_game(self, col1: str, col2: str) -> int: + return self.calculate_score( + TheirMove(col1), self.calculate_move(TheirMove(col1), GameOutcome(col2)) + ) diff --git a/day2/example.txt b/day2/example.txt new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/day2/example.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..c4b1829 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,2500 @@ +C X +C Y +C X +B X +B Z +A Z +C Y +C Z +B Z +C X +B Y +C Y +C Y +A Y +C Y +C Y +C Z +C X +B Z +C Y +A Y +A Y +C Z +B Y +A Y +C Z +C Y +A Y +A Y +B Y +C Y +C Z +C Y +B X +B Z +C Y +B Z +A X +C Z +A Y +B Y +C Y +C Y +B Z +B Y +A Z +C X +C X +C Y +C X +B Z +A Y +B X +B Z +C Z +C X +C X +B Z +A Y +B Y +C Y +C Y +A Y +C X +A Y +B Z +C Y +C Y +B Y +C Y +A Z +A Z +B X +A Y +C Y +A Y +C Y +C Y +C X +C Y +B Z +C Y +C Z +C X +B X +C Y +C Y +C X +C Z +A Y +C X +B Z +C X +A Y +B Y +C Y +A Y +A Y +A Y +B Y +C Y +A Y +A Y +C Z +C Y +B Y +C X +C Y +B Z +B Z +C X +C Y +C X +C Y +C Y +A Y +C Y +C X +C Y +C Y +B Y +B Z +A Y +B Y +A Y +A Y +C Y +B X +C Y +C X +A Y +C X +C X +C Y +C Y +B Z +C X +A Y +B Z +C Z +C X +A Y +B Z +C Y +B Y +A Y +A Y +C Y +B Y +C Y +C X +C Y +A Y +C Y +A Y +B Y +C X +C Y +C Y +B Z +B Z +A Y +C Y +C Y +C Y +C Y +A Y +C X +C Z +C X +A Y +A Y +A Y +C Y +B Z +B Z +C Y +C Y +B X +C Y +C Y +B Z +B X +B Y +C Y +C Y +C X +B Y +B Z +B Z +C Y +C Y +C X +C X +A Y +C Y +C Y +B X +B Z +B X +B Z +B Y +C X +B X +B Y +B Z +B Z +B X +B Z +B Y +C X +C Y +C X +C X +B Z +C Y +C Y +C Y +B Z +C Y +C X +C Y +C Y +A Z +C Y +A Y +C Y +A Z +A X +C Y +C Y +C Y +C Z +B Z +B Z +C Y +B Z +B Z +C X +C Y +A Y +A Y +C Y +A Y +C Y +C Y +B Y +A Y +C Y +B Z +A Y +B Z +C X +C Y +A Y +B Z +A Y +C X +C Y +B Y +C Y +A Z +B Z +B X +C Y +A Y +A Z +C X +A Y +B Z +A Y +B Y +C Y +C Y +B Z +B Z +C X +B Z +C X +C Z +C Y +C X +A Y +C X +A Y +A Y +B Z +B Z +B Z +A Y +A Y +C Y +A Y +B Z +C X +C Y +C Y +C Y +B Y +A Y +C Z +C Y +A Y +A Y +B Z +C Y +C Y +C Y +B Z +C Y +C Y +A Y +A Y +C Y +C X +B Z +B Z +C X +C X +C Z +A Y +C Y +A Y +A Y +C X +A Z +B Y +A Y +C X +A Y +C X +C X +A Y +A Y +C X +B Y +B Z +C Y +C Z +C Y +C Y +B Z +C Y +A Y +A X +B Y +C Y +A Y +C Y +C Y +C Y +A Y +C Y +A Y +C Y +B Z +A Y +C X +C Y +A Y +C Y +A Y +A Y +A Y +B Z +C Y +B Z +A Y +C Y +A Y +C Y +C X +B Z +A Y +C X +B Z +B Y +C Y +C Z +C Y +B Y +B Y +A Y +A Y +C X +B Y +A Y +C Y +B X +C X +A Y +C Y +A Y +C Y +B Z +A Z +B Z +B Z +A Z +C Y +C Y +C X +B Y +C Y +A Y +C Y +C Y +B Y +B Z +C Y +C X +A Y +C X +C X +C Y +B Y +C Y +B Z +C Y +A Y +A Y +C Y +C X +C X +C X +C Y +C X +C Y +C Y +A Y +C Y +C X +C Y +C X +C X +C X +A Y +B Y +C Y +C Y +C Y +C Y +C Y +A Y +A X +B Z +C X +C Y +C Y +B Z +A Y +A Y +B X +B Z +C Y +C Y +B Z +A Y +A Y +A Y +C Y +C Y +A Y +A Y +C Y +C Y +C X +C X +C X +B Z +C Z +C X +A Z +C Y +C X +A Y +B Y +B Z +C X +C Y +C Y +C Z +C Y +C X +A Z +C Y +A X +B Y +C Y +C Y +C Y +C X +B Y +B Y +C X +B X +A Y +C Y +C Y +C Y +B X +C Y +A Y +C Y +C Y +B Z +C X +B X +C Z +C Y +A Y +B Y +B Z +C Z +C X +C X +A Y +A Y +B Z +A Y +C X +B Y +C Y +A Y +B X +A Y +A Y +C Z +C Y +C Z +B Z +A X +C Y +B Y +C Y +B Z +B Y +C Y +A Y +B Z +B Z +C X +B Z +C Y +B Z +B Z +C Y +C Y +B Z +C Z +C Y +B Z +C Y +B X +A Y +B Z +A Y +C Y +A Y +C Y +C Y +B Y +B Z +B Z +C Y +A Y +B Z +C X +C Y +C Y +A Y +C Y +C Y +C X +A Y +C Y +C Y +A Y +C X +A Y +A Y +A Y +C Y +C Y +A Y +B Z +A Y +B Y +A Y +A Y +C Y +C Y +C Z +A Y +C Y +B Z +A Y +C Y +C Z +C Y +C Y +B Z +C Y +C Y +B Z +B Y +C Y +A Y +C X +C Y +C Z +C Z +C X +C X +C X +C Z +C Y +B Z +A Y +B Z +B Z +A Y +C Y +C Y +C Y +B X +C Y +A Y +A Z +B Y +B Y +A Y +B Z +A Y +B Y +C Z +C Y +C Y +C Y +B Z +B Z +B Z +C Y +C Y +A Y +C X +C X +A Y +C Y +C Y +C Y +C Y +C X +C Y +C Y +C Y +C X +A Z +B Y +C Y +A Y +A Y +B Z +A Z +C Y +C Y +C Y +C X +B X +B Y +C Y +A Y +A Z +B X +C Y +C Y +B Z +A Y +A Y +B Z +B Z +C Y +C Y +C X +B Y +B Z +C Y +B Y +C Y +A Y +C X +C X +B Z +A Y +C Y +B Z +C X +C Y +B Y +B Z +A Z +B Y +B Y +C X +C Y +A Z +C X +C X +A Y +A Y +C X +A Y +B Y +B Z +A Y +B Z +B X +C Y +C Y +C X +B Z +A Y +B Y +A Y +C Y +C Z +B Z +C Y +A Y +C Y +C Z +A Z +B Z +B X +C Y +C Y +B Y +C X +B Y +B Z +B Z +B X +B Y +C X +C Y +C X +C Y +A Y +A Y +C Y +A Y +C Y +C X +C Y +A Y +B Z +C X +C Y +B Z +C Y +C Y +B Y +B Z +A X +C Y +B Y +B Y +B Z +C Y +B Z +A Y +C Y +B Y +C Y +A Y +C Y +B Z +C Y +A Y +A Y +C Y +A Y +C Y +A Y +A Y +B Z +C X +C Y +B Z +C Y +A X +A Z +C Y +C X +C X +C Y +C Y +B Z +A Z +A Y +C Y +B Z +A Y +A Y +C Y +B Z +A Y +C X +A Y +A Y +C X +B Z +B X +A X +A Y +B Y +A X +B X +C X +C Y +A Y +C Y +A Y +A Y +C X +B Y +C X +B Y +C Y +C Y +A Y +B Z +A Z +B Y +C X +C Y +C Y +B Z +C Z +A Y +A Y +A Z +C Y +A Y +B Z +C Y +C Y +B Y +A Y +A Y +C Y +C X +C X +B Y +B Z +C Y +B Y +B Z +C Y +A Y +B Z +A Y +A Y +A Z +C X +B Z +C Y +B Z +A Y +C X +C Y +C Y +B X +B Z +A Y +A Y +A Y +A Y +A Y +C Y +A Y +A Y +C X +C Y +C Z +B Z +A Z +C Z +A Y +B Z +B Y +A Y +C Y +B Z +A Y +C Y +C Y +A Y +C Y +B Z +B Y +B Z +C Y +C Y +C Y +A Z +C X +B X +B Z +C Z +C Y +C Y +C Y +C X +A Y +C Y +A Y +A Y +B Z +A Y +C Y +C Y +A Y +C Y +A Z +B X +A Y +C Y +A Y +A Z +A Y +A Y +B Z +B Y +B Z +C Y +B Z +C X +A Y +C Y +A Y +A Y +A Y +B Z +B Z +C Y +B Z +B Y +C X +A Y +C Y +A Y +B Z +C X +B Y +C Y +B Z +C Y +A Y +C Y +C Y +B Y +B Z +C Y +B Z +B Y +C Y +C X +A Z +C Z +C Y +C Y +A Y +A Y +C X +C Y +C Y +C Y +C X +B Z +C X +C Y +A Y +A Y +B Z +A Y +A Y +C Y +A Y +B Z +C X +C Y +C Y +C Y +C Y +C X +B Z +A Y +B Y +C Y +C X +B Z +C Y +A Y +A Y +B Z +C Y +A Y +C Z +C X +B Z +C Y +A Z +B Z +A Y +A Y +C Y +B Z +B Z +A Y +C Y +B Y +C Y +A Y +A Y +B Y +B X +B Z +C Y +A Y +C Y +A Y +A Y +B Z +B Y +A Y +A Y +A Y +C Y +B Y +C Y +A Y +C X +C Y +C Y +B Z +B Z +C Y +C Y +A Y +B X +C X +A Y +C Y +C Y +C Y +A Y +C X +B Z +A Y +C Z +B Y +B Y +C Z +A Y +C Z +C Y +C X +B Y +A Y +C X +C X +C Y +C X +C X +B Z +C Y +B Y +A Y +B Y +A Y +B Z +C X +C Y +C X +C Z +C X +B Z +C X +C Y +C Y +C Y +B Z +A Y +C Y +C Y +C Y +B Z +A Y +C X +C Y +C Y +C Y +C X +A Z +C Y +C Y +C X +B X +B Z +A Y +B Z +C Y +B Y +B Z +A Y +B Z +C Y +A Y +A X +C X +C X +C Y +A Y +B X +C Y +B X +B Z +C X +A Y +B X +C X +A Y +C Y +C Y +C Y +A Z +C Y +A Y +B Z +B Z +A Z +C Y +A Y +B Z +C Z +C X +C X +C X +A Y +A X +C Y +A Y +B Y +C Y +C X +C Y +C Y +A Y +B Z +C Y +B Z +A Y +C X +C Y +B Z +C Y +C Y +B Y +A Y +A Y +A Z +C Y +B Z +B Y +B Z +B Y +A Y +C Y +C Y +C X +C Y +C Y +B Z +C Y +C Y +C X +B Y +B Z +C Y +C Y +A Y +C Z +C Y +B Z +A Y +A X +A Y +C X +C Y +C Y +B Z +A Y +B X +C Z +C Z +C X +C Y +B Z +C Z +B Z +C Y +A Y +C Y +A Y +B X +C X +C Y +B Z +C Y +B Y +B X +B X +B Z +C Y +C Y +B Y +B Z +C Y +A Y +B Z +C Y +B Z +C Y +B Z +C Y +A Y +A Y +C Y +C Y +B Y +B Z +C Y +B Z +C X +B Z +C Y +B X +C X +B Z +A Y +C X +B Z +C Y +A Y +B Z +A X +B Z +B Z +B Z +C Y +C Y +C Y +C Y +A Y +A Y +B Z +B X +C X +C Y +B Y +A Y +A Y +B Z +C Y +A Y +A Y +C Y +C X +C Y +C X +C Y +C Y +C Y +B Z +C Y +C X +B Y +C Y +C Y +C Y +A Z +C X +C Y +A Y +C Y +B Z +B Y +C Y +A Y +A Y +C Y +C Y +C X +A Y +C Y +A Z +A Y +B Z +A Y +C X +C Y +C Y +B X +B Z +C X +B X +C Z +C X +B Z +B Z +C Y +C X +B Z +B Z +B Z +C Y +C Y +A Y +C Y +B Y +B X +C Y +C Y +C Y +B X +C X +B X +C Y +A Y +C Y +C X +C Y +C Y +B X +B Z +A Z +B Z +A Y +B Z +C X +B Z +C Y +C Y +C Z +A Y +C Y +C Y +A Z +B Y +C Y +A X +A Y +B Y +C Y +B Z +C Y +C X +C Y +B Z +A Y +C X +C Y +C X +C Y +C Y +C Z +A Y +C Y +B Z +A Y +C Z +C Y +A Y +C Y +C Y +C Y +C Y +A Y +C Y +C Y +C Y +C Y +B Z +C X +A Y +A Y +C Y +B Y +C Y +C Y +A Z +C Y +B Y +C Y +B Z +C X +A Y +C Y +C Y +B Z +C Y +A Y +A Y +C Y +B Z +C Y +A Y +B Z +C Y +C Y +B Z +C X +B Z +B Z +C Y +C Y +A Y +C X +A Y +C Y +B Z +A Y +B Z +A Y +C X +C Y +B Z +B Y +B Z +A Y +B Z +C Y +B Z +C Y +B Y +A Y +B Z +B X +B Z +C Y +B Z +B Z +B Z +A Y +A Y +C Y +B Z +B Z +C X +B Z +C Z +A Y +B Z +B Z +C Y +B Z +B Z +C X +C Z +A Z +C Y +C Y +B X +C Z +C Y +A Y +B Z +C X +B Z +C Y +C Y +B Z +B Z +B Z +C X +C Y +C X +C X +A Y +B Z +B Y +C Y +C Y +B Z +C Y +C Y +C Y +C Y +C Y +B X +A Y +A Y +B Y +C Y +B Y +C Y +B Y +B Z +C Y +C Y +C X +B Y +A Y +B X +B Z +C X +A X +C Y +A Y +A Y +C X +B Y +A Y +B Z +C X +B Z +C Z +C X +C Y +C X +C Y +C Y +C Y +B Y +C Z +C X +B Z +C Y +C X +C X +B Y +C Y +C Y +C Z +B Z +C Y +C Y +B Y +C Z +C X +B Z +C Y +C X +C Y +B Z +C Y +C Y +A Y +B Y +C X +C Y +C Y +C Y +B Y +B Y +C Z +B Z +C Y +B Z +A Z +C X +B X +C X +A Y +C Y +A Z +C X +C Y +A Y +A Y +B Y +A Y +C Y +B Y +C X +C X +C X +C X +C Y +C Y +A Y +B Z +C Y +A Z +C Y +A Y +B Z +B Z +C Y +A Z +C Y +C Y +C Y +B Z +C Y +C Y +A X +A Y +A Z +C Y +A Y +B X +A Y +B Z +B Y +B Z +B Y +C X +C X +A Y +B Z +B Y +C X +B X +B Y +A Y +C Y +C Y +C Y +B Z +C Y +A Y +B Z +C X +B Z +B Z +B X +B Y +C Y +C Y +C X +B Z +C Y +C Y +C Y +A Y +C Y +B Z +B Y +C Y +C X +C X +B X +B Z +A Z +C X +A Y +B Y +C Y +A Y +B Y +C Y +C Y +C Z +C Y +C X +A Y +C Y +C Y +B Z +C Y +C Y +C Y +C Y +A Y +B Z +B Z +C Y +C Y +C Y +C Y +C Y +B Z +C Y +C Y +C X +A Y +A Y +C Y +C X +A Y +B Z +A Y +C X +C Y +C Z +C Y +A Z +A Y +A Y +B Y +C Y +C Y +B Y +C Y +A Y +C X +B Z +C X +A Y +B Z +C X +A Y +C X +C X +A Z +A Y +B Y +A Y +B Y +A Z +C Y +C Y +C Y +B Z +C Y +A Y +B Z +B Y +C Y +B Y +C Z +A Y +B Y +C Y +B Y +A Y +B Z +C Y +C X +C Y +A Y +A Z +C Y +B Z +C Y +B Y +A Y +C X +A Z +C Z +C X +A Y +C X +C X +C Y +C Z +A Y +A Y +C Y +A Y +C Y +B Z +C X +A X +C X +C Y +C Y +C Y +C Y +B Z +B Z +B Z +C X +C Y +B Y +C Y +B Y +C Z +A X +B Y +C X +B Y +C X +B Y +C Y +B Z +C X +A Y +B Z +C X +A X +C Y +B Z +B Z +C X +B Z +B Z +C X +C Y +C Z +B Z +C Y +C Y +C Y +B X +A Y +B Y +B Z +B Z +C X +A Z +C Y +C Y +A Y +A X +A Y +C Y +B Y +C Y +A Y +C X +C Y +C Y +C Y +C Y +C Y +C Y +C Y +C Y +C Y +C Y +B Z +B Z +A Y +B Y +C Y +C Y +C X +B Z +A Y +C Y +B Z +C Y +A Y +C X +B X +C Z +A Y +C X +B Y +C X +B Z +A Y +C Y +C Y +C Y +B Z +B Z +A Z +C Z +A Y +B Z +C X +C Y +A Y +C Y +C Y +C X +B Z +C Z +C Y +B Z +A X +B Y +A Z +B X +C X +A Y +C Y +B Z +B Z +C Y +A Y +B Z +B Z +A Y +A Y +B Z +B Z +A X +B Z +C Y +C Z +C Y +C Y +B Z +C Y +A Z +A X +C X +B Y +B Z +C X +B Z +A X +A Y +A Y +B X +B Y +B Z +C X +C X +C X +C Y +C Y +B X +C Y +C Y +A Y +C X +A Y +B Z +A Y +C Y +B X +C X +C Y +A Y +C X +C Y +C Y +B Z +A Y +A Y +A Z +C Y +B Z +A Z +B X +A Z +C Y +B X +A Y +C Y +C Z +A Z +C X +A Y +B X +C Y +C Y +C X +C Z +A Y +A Y +C Y +B Z +C Y +C X +B X +A Y +B Y +B Z +B Z +C Y +C Y +A Y +B Z +B Z +C Y +C Z +C Y +C Y +C X +C X +A Y +B Z +A Y +B Z +B Z +C X +B X +C X +C Y +B X +B Z +C X +C X +C X +B Z +B Y +B Z +C Y +C Y +B Z +B Y +B Z +C Y +B Y +A Y +A Y +B Y +A Y +B Z +A Y +C X +A Y +C Z +B Y +C Y +C X +C X +C Y +C X +C Y +A Y +B Z +C X +C Y +C Y +C Y +C Y +C Y +B Y +A Y +B Z +C Y +A Z +C Y +B Z +C X +C Z +A Y +B Z +C X +C Y +B Z +C Y +A Y +C Y +C X +C X +C Y +A Y +B Y +A X +C Y +C Y +A Y +C Y +A X +C Y +B Y +C X +B Z +B Z +B Y +C Y +C Z +C X +B Z +B Z +B Y +C Z +A Y +C Y +C Y +B Y +C X +A Y +C Y +C Y +A Z +A Y +B Y +C Y +C Y +C X +B X +C Y +A Y +B Z +B Y +A Y +B Y +C Y +C X +C Y +C Y +C X +A Y +B Z +C X +C Z +B X +C Y +C X +C Y +C X +C Y +B Z +A Y +A Y +B Z +C Y +C Y +B Z +C Y +C X +B Z +C Y +B Z +C X +C Y +C X +A Y +C Y +A X +C Y +C X +A Y +C Y +A Y +C Y +A Y +C X +A Y +A Y +A Y +B Y +B Z +C Y +B Z +A Y +C Y +C X +B X +C Y +B Z +B X +B X +B Y +C Y +C X +C Y +C X +B Y +B Z +A Y +B Y +C Y +C Z +A Y +C Y +B Y +A Y +C X +C Y +A Y +C Y +A Z +C Z +C Y +B Z +C Y +C Y +B Y +A Y +C Z +A X +C Y +B Z +C Z +B X +C Y +C X +C X +B Z +B Z +B X +B Y +C Y +B Z +B Z +B Z +A Y +B Z +C Y +C Y +A Y +A X +C Z +A Y +C Z +C Y +C X +C Y +C X +B Z +C Y +A X +B Z +B Y +C Y +B Y +C Y +C Y +A Y +B Z +B Y +C Y +C X +C Y +C Y +B Z +A Y +B X +C Y +C Y +C Y +A Y +C Y +C Y +C X +C Z +C X +B Y +A Y +C Z +B Z +B Z +A Y +C Y +C X +B X +C X +B Z +A Y +C Y +C Y +B Z +A Y +B Y +C X +B Y +B Z +B Z +B Z +B X +B Y +B Z +C X +A Z +A Y +C Y +A Y +C Y +C Y +B Z +B Z +C X +B X +C Y +A Z +C Y +C X +C Y +B Y +C X +B Z +C Y +C X +B Z +A Y +A Y +C Y +A Y +A Z +C Y +A Z +A Y +C Y +C X +B X +C Y +C Y +C X +A Y +C X +C Y +B Z +B X +C Y +A Y +B X +C Y +B Y +C X +A Y +B Z +C Y +C Y +B Z +A Y +A Z +C Y +C Y +C X +A Y +B Z +B Z +B Y +B Z +A Y +C Y +A Y +B Y +A Y +C X +C Y +A Z +A Z +B Y +A Y +C Y +A X +C Y +C Y +B Z +C Y +C X +C Y +A Y +C Y +C Y +C Y +C Y +A X +C Y +B Y +C Y +A Y +C Y +C X +C X +C Z +B Z +A Y +B X +C Y +C Y +C Y +A Y +B Z +B Z +C Y +A Y +B Z +A Y +C X +C X +A Y +C Z +C Y +B Z +B Z +A Y +A Y +C Y +A Y +C Y +A Y +B Z +C X +C Y +C Y +A Y +C Y +A Y +A Z +B Y +C Y +C X +A Y +C X +A X +C Y +C Y +B Y +C Y +B Z +A Y +C X +B Z +A Y +C X +B Z +A Y +C Y +B Z +A Y +B Z +C X +C Y +C X +C Y +B Z +C Y +B Y +C Z +B Z +C Y +C Y +A X +C X +A Y +C Y +B Z +A Y +A Z +B Z +C Y +C Y +A Y +A Y +A Y +C X +C Y +A Z +C Y +C Z +A Y +A Y +C Y +C X +C X +C Z +C Y +C Z +B Z +A Y +B Z +B Z +C X +A Y +B Y +A Y +A Z +A Y +C Y +C Y +C Z +A Y +C Y +B Y +C X +C X +B X +C Y +A Y +C Z +A Y +B Z +B Y +C Y +A Y +A Y +C Y +C Y +C Y +C Y +C Y +C Y +C Y +A Y +B Y +A Y +B Y +B Y +C X +C X +C Y +A Y +C Y +C Y +C Z +C Y +C Y +B Y +C Y +B Y +A Y +C Y +B Z +C X +C Y +A Z +A Z -- cgit v1.2.3