From 15392a2813dd0902e9276deecbea9004049c0268 Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Fri, 2 Dec 2022 22:47:31 +0100 Subject: Day 2 --- Day2/CHANGELOG.md | 5 + Day2/Day2.cabal | 34 + Day2/app/Main.hs | 61 ++ Day2/input | 2500 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2600 insertions(+) create mode 100644 Day2/CHANGELOG.md create mode 100644 Day2/Day2.cabal create mode 100644 Day2/app/Main.hs create mode 100644 Day2/input diff --git a/Day2/CHANGELOG.md b/Day2/CHANGELOG.md new file mode 100644 index 0000000..3b3231f --- /dev/null +++ b/Day2/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for Day2 + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/Day2/Day2.cabal b/Day2/Day2.cabal new file mode 100644 index 0000000..976a581 --- /dev/null +++ b/Day2/Day2.cabal @@ -0,0 +1,34 @@ +cabal-version: 2.4 +name: Day2 +version: 0.1.0.0 + +-- A short (one-line) description of the package. +-- synopsis: + +-- A longer description of the package. +-- description: + +-- A URL where users can report bugs. +-- bug-reports: + +-- The license under which the package is released. +-- license: +author: Andreas Grois +maintainer: andi@grois.info + +-- A copyright notice. +-- copyright: +-- category: +extra-source-files: CHANGELOG.md + +executable Day2 + main-is: Main.hs + + -- Modules included in this executable, other than Main. + -- other-modules: + + -- LANGUAGE extensions used by modules in this package. + -- other-extensions: + build-depends: base ^>=4.16.3.0 + hs-source-dirs: app + default-language: Haskell2010 diff --git a/Day2/app/Main.hs b/Day2/app/Main.hs new file mode 100644 index 0000000..eb2a05e --- /dev/null +++ b/Day2/app/Main.hs @@ -0,0 +1,61 @@ +module Main (main) where + +import System.Environment + +main :: IO () +main = getArgs >>= readFile . head >>= print . solveDay2 + +solveDay2 :: String -> (Integer, Integer) +solveDay2 x = (solveDay2Part toGamePart1 x, solveDay2Part toGamePart2 x) + +solveDay2Part :: (String -> Game) -> String -> Integer +solveDay2Part c = sum . map (pointsFromString c) . lines + +data Sign = Rock | Paper | Scissors deriving Eq +newtype Game = Game (Sign, Sign) + +pointsFromString :: (String -> Game) -> String -> Integer +pointsFromString = (points .) + +points :: Game -> Integer +points (Game (opponent, mine)) = winning opponent mine + cardScore mine + where winning a b | a == b = 3 + winning Rock Paper = 6 + winning Rock Scissors = 0 + winning Paper Scissors = 6 + winning Paper Rock = 0 + winning Scissors Rock = 6 + winning Scissors Paper = 0 + cardScore Rock = 1 + cardScore Paper = 2 + cardScore Scissors = 3 + +toGamePart1 :: String -> Game +toGamePart1 [a,_,b] = Game (toSign a, toSign b) + +toGamePart2 :: String -> Game +toGamePart2 [a,_,b] = Game (toSign a, toCheatedSign (toSign a) (toCheat b)) + +toSign :: Char -> Sign +toSign 'A' = Rock +toSign 'B' = Paper +toSign 'C' = Scissors +toSign 'X' = Rock +toSign 'Y' = Paper +toSign 'Z' = Scissors + +data Cheat = Win | Draw | Lose + +toCheatedSign :: Sign -> Cheat -> Sign +toCheatedSign a Draw = a +toCheatedSign Rock Win = Paper +toCheatedSign Rock Lose = Scissors +toCheatedSign Paper Win = Scissors +toCheatedSign Paper Lose = Rock +toCheatedSign Scissors Win = Rock +toCheatedSign Scissors Lose = Paper + +toCheat :: Char -> Cheat +toCheat 'X' = Lose +toCheat 'Y' = Draw +toCheat 'Z' = Win \ No newline at end of file diff --git a/Day2/input b/Day2/input new file mode 100644 index 0000000..c08c4d1 --- /dev/null +++ b/Day2/input @@ -0,0 +1,2500 @@ +A X +A X +A Z +B X +A X +B Z +A X +A X +A X +A X +C Z +C Y +A X +A X +A Z +C Y +A Z +B Y +C Z +A X +B Y +C X +C Z +C Y +A Y +B X +B X +A X +B X +A X +C X +B Z +C Y +A X +A X +C Z +A Z +A X +B X +B X +A X +B X +B Y +A X +A X +A Z +A Y +C Y +A Z +C Z +C Y +A Z +A X +B Z +A X +C Y +B Z +C Y +A X +A Y +C Y +A Z +B Z +A X +C Y +A X +A X +B X +C Y +A Y +A X +C Z +B Z +A X +B X +B Z +A X +A Z +A X +A X +A Y +A Z +A X +B X +A Z +A Z +C Y +A X +B Z +C Y +C Z +A X +A Z +A X +B Y +A X +C X +A X +A X +C Y +C X +A X +C Y +B Z +C Z +C Y +B Z +A X +C Y +B Z +A X +B Z +A X +B Y +A Z +B X +A X +A X +A X +C Y +C X +A Y +C Z +C Y +B Z +A X +A X +B X +A X +A X +A X +C Y +A X +A X +A Z +C Y +A Z +A X +A X +A X +C Y +A Y +A X +A X +C Z +C Y +B X +C Z +C Y +B X +C Y +A X +C Z +A X +B Y +C X +A X +B Y +B Y +A Z +A X +A X +C X +A Y +B Y +C Y +B Z +A X +A X +A Y +A X +A X +C Y +A X +C Y +C Y +C Z +A Z +A X +C Y +C X +C Y +A X +A X +C Y +A Z +A Y +A Y +B Z +B Y +B X +C Y +A X +C Y +C Z +A X +A Y +A Y +B X +C Y +A X +B Z +A X +C Y +B X +A Y +C X +C Y +A X +C Y +B Z +C Y +C Y +C X +B X +C X +C Y +B Z +C Z +C Y +A X +A Z +C Y +A Z +B X +C X +C Y +A Z +C Y +C X +A X +A X +A X +B Y +A X +A X +B Y +B Z +A X +A Y +A Z +B Y +A X +A X +A X +B Z +A X +C Y +A X +A X +B Y +A X +C Y +B X +C Y +A X +A X +C X +A Y +A X +B X +A X +C Y +C Y +C Z +A Y +B Y +B X +A X +A X +A X +C Y +A Y +A X +A Y +C Y +A X +A X +B Y +C Z +A Y +B Z +C Y +A X +C Z +B X +C Y +B Z +C Y +B Z +A Z +A X +A X +C Z +C X +A X +A X +C Y +B Z +B Y +A X +A X +A X +B X +B X +B Y +C Y +C Z +A X +C X +C Z +A X +A X +C Y +A X +A X +C Z +B Z +B Z +A X +B X +A Z +C Z +C Z +B X +B Z +B Z +C Y +A X +A Y +C Z +A X +A X +A X +A Y +A X +A X +A Z +C Y +C Y +A X +A X +A X +A Z +B Z +C Y +A Z +A X +B Y +A X +A X +C Z +A Z +A X +C Y +A Y +C X +B Z +C Y +C Y +A X +C Y +B Y +A X +A X +C X +B X +B Z +A Y +B X +B Z +B Z +A X +A Y +B Y +B Y +A Z +C Y +A X +A X +B Y +C X +A Z +B X +B Z +A X +A Y +C Y +B X +B Y +C Y +A X +B Y +B X +A X +C Y +B Y +B Z +B Y +C Y +C Y +B Z +C Y +B X +A X +A X +B Y +B X +B X +C Y +C Z +B X +A X +A Z +A Y +C Y +C Z +A X +A X +A X +C X +A Y +C Y +C X +A X +A X +A X +A X +B Z +A X +A X +A X +A X +A X +C Y +C Z +B Z +C Z +A Z +C Z +A X +B X +A Z +A X +A X +A X +A X +B Y +A Z +C Y +B Z +A Y +C Z +C X +B Z +C Z +C Z +C X +C Y +B X +C Y +C X +A X +A Y +A X +C X +A X +A X +C X +B Z +A X +A X +B X +C Z +A X +A X +B Y +A X +B Z +C Y +A Y +A Y +C Y +A X +A Z +C X +A X +C Y +A X +B X +C Y +A X +B Y +A X +A X +A X +C Y +C X +B X +A Y +A X +A X +A X +C Y +C Z +A Z +A X +C Y +A X +B Z +C Z +B X +B X +A X +A X +C Z +C X +A X +A Z +A X +C Y +A X +C Y +A Z +A X +C Z +C X +B X +B Z +C X +A Z +B X +C Y +B X +B Y +B X +A X +C Y +B Y +C Y +C Z +C Z +B Y +C Y +B Y +A Y +B Z +A X +B Z +C Y +A X +A X +A X +A X +C Z +C Z +C Z +A X +A X +C Z +C Z +A X +C Y +A Z +A Z +B Y +C Z +A Z +C Z +C Y +A X +B Z +C Y +C Z +A Z +C Y +A X +A X +A X +A X +B Z +B Z +A X +B Z +A X +A X +A X +C Z +C X +A X +C X +A Z +B X +A X +A X +A X +A Z +B Y +B Y +A X +C Y +A X +C Y +A X +A X +A Y +B X +A X +B Z +A X +C Y +C Y +A Z +A X +A X +B X +C Y +C Z +A X +A X +B X +A Y +A Z +C Z +A X +B Z +B Y +A Y +B Z +A Y +A X +C Y +A Z +A X +A X +A X +C Y +C Y +A Z +A Y +C X +A X +A X +A X +C Y +A X +B Z +C Y +B Y +C Z +A X +B Z +B Y +B X +C Y +C Z +B Y +C Y +C Y +C Y +A Z +A X +B Y +C Y +C Z +A Y +A X +B Z +C Y +A Z +C Z +A X +A Z +B X +C Z +A X +B Y +C Z +C Y +C Y +B Y +A Y +C Y +B Y +C Y +C Z +B X +A X +A X +A X +B Y +A X +A X +C Z +C Y +C Z +B Z +A X +B X +A Y +A Z +B Y +C Y +C X +A X +C Y +A Y +A Z +B Z +A Z +A Y +C Y +A X +C X +C Y +B Y +B Y +B Y +A X +C Z +A X +C Y +A Z +B Z +C Y +C Y +C Y +C Y +B X +A Y +C X +C X +A X +A Z +B X +A X +C Y +B X +C Y +B X +C Y +A X +A Z +C Y +A Y +A X +A Z +A X +B Z +A X +B Y +C Z +A X +B X +B X +A X +C Z +A X +C Y +A X +A X +B X +A X +C Z +A X +A Y +C Y +B X +B X +B Z +A X +A X +A X +A X +B Y +A Y +A X +C Z +C Y +C Z +A Z +A X +B X +C Y +A X +C Z +A Z +A X +A X +B X +A X +B Z +B X +A Y +A Z +A Y +A Z +A X +C Y +C Y +B X +C Y +B X +A X +B Z +C Y +A Y +C Y +C Y +A Z +B Z +B X +A X +B Z +C Y +C Y +C Y +A Z +A X +A X +C Y +B X +B X +A X +A Z +A X +A X +A Z +C Y +B X +A X +A Y +A X +B Z +A Z +C Y +A X +A X +A Y +A X +A X +A X +B X +B X +A Z +B Z +A Y +A X +B X +C X +A Z +B Z +C Y +B Y +C Y +B X +A X +C Z +B Y +A X +C Y +C Y +C Y +A Y +B Y +A Z +B Z +A X +A Y +C Y +C X +A X +C Y +C Y +A X +A X +A X +B X +B Z +A Z +A X +C Z +C Z +B X +C Z +A Y +A X +A Y +B Z +A Y +A X +C Y +B X +A X +B X +A X +C X +A X +B Y +A Z +C Y +A X +C X +B Z +A X +C Y +A Y +C Y +A X +B X +C Y +A X +B X +A X +A Y +C Z +A X +A X +A X +A X +B X +C X +A X +A X +C Y +C Y +A X +A X +A Y +C Y +A X +B Z +A Z +C Y +B X +A Y +A Z +A X +A X +C X +A X +B X +A X +C Y +B Z +B Z +A X +B Y +A X +B Y +B Z +B X +B Y +C Y +A X +C Y +A X +A X +A X +A Z +C Y +C Y +A Y +B X +A Z +A Y +A Y +A X +B X +C Y +A X +C X +C Y +C Z +A X +A Z +A Z +A Z +A X +C Y +A X +A Y +A X +C Z +C Y +C Y +B Z +B Z +B Z +A X +C Z +A Z +A X +A X +A X +B Z +B X +A X +B Z +B Y +C Y +C Y +A X +A X +C Y +C Y +C Z +B X +A X +A X +C Y +A X +C Y +A Z +C Y +A X +C Z +B Z +C Z +C Y +B Z +C Y +B X +B X +B X +C Y +A Z +A X +C Y +A Y +C Z +A Y +C Z +B Y +C Y +A X +A Y +A X +C X +C Y +C Y +C Y +C Y +A Y +C Y +B Z +C Y +A X +C Z +B Z +A Y +A X +B Z +A Y +A Z +A X +C Y +C Y +C Y +A Y +B X +C Z +A X +B Z +C Z +A X +B X +B Y +A X +C Y +B X +A Z +A Y +A X +A X +A X +B X +C Z +C Y +B Y +B X +C Y +A X +A X +C Y +A Z +C X +A X +A Z +A X +A X +C Y +A Z +A Y +A X +A Z +B Z +A X +B X +B X +B X +B X +C Y +B Y +A X +A Y +A Y +A Y +B Y +A Y +C Z +A X +A X +A X +A X +A Y +C Y +B X +A X +A X +A X +A Z +A X +A X +C Y +B Y +B X +B X +A X +A X +C Y +A Z +C X +C X +C Y +A Y +C Z +B Z +B X +A X +A X +C X +A X +C X +A Y +B X +A X +B X +B Z +B Z +B Z +A X +B Y +C Z +C X +B X +B Z +A X +A X +C Z +A X +A X +B Y +A X +C Y +C Z +B Z +B Z +A X +A X +A X +A X +B X +B Z +C Z +A Y +B X +A X +C Y +C Y +A Z +C Z +C Y +A X +C Z +A Z +C Y +C Y +A X +A X +B Y +B Z +A Z +A Y +A Y +A X +B X +A Z +C Y +C Y +B Z +B Z +B Y +C Y +B Y +A X +C Z +B Z +C X +C Y +A X +A X +B X +C Y +A X +A X +A Z +A Y +C Y +A X +A X +B X +B X +C Z +C Y +B X +C Y +B Z +A X +A X +C Y +A Y +B Z +B Z +A Y +A Z +A X +A X +A Z +C Y +A X +C Y +A Y +C Y +C Z +B X +B X +C Y +A X +B X +B Z +C Y +C Y +C X +A Y +C Z +A X +C Y +A Y +A X +A Y +A X +A X +A Y +B X +B Y +A X +C Z +C Y +C Z +A Z +B Y +C Y +C X +C Y +A X +C Z +A X +C Z +A X +B X +A X +A X +B X +A X +A Y +A X +C Z +C Y +A Z +B Y +A X +A Y +A X +C X +B X +B X +A Z +C Z +C Y +B Y +A X +B Y +A Z +A X +A X +A X +A X +C Y +C Y +B Y +C Y +B Z +A X +A X +B Z +B Y +C Y +C Y +C Z +C Y +A X +A X +C X +B Y +B X +C X +B X +B Y +A X +C X +C X +A Y +C X +A X +A Z +C X +B Y +C Y +B Z +B X +A X +A X +A X +B X +C Y +C Y +B X +A X +C Y +A X +A X +A X +C Z +A X +A X +C Z +A X +C X +C Y +C Z +A X +A X +C Y +A Y +A X +C Y +A Y +A X +A Y +A Z +A X +C Y +A X +C Y +A X +A Y +A Z +B X +B X +B X +B Y +C Z +B Z +C Y +B Z +A Z +A X +A X +A X +B X +C Y +B X +B Z +A Z +C Y +A Z +C X +A X +B Y +B Y +A Z +C Y +A X +A X +A X +A X +B Y +C X +A X +C Z +C Y +B X +A Y +A Z +A X +B Y +C X +B Z +B Y +A Y +A X +A X +A X +B Z +A X +C Z +A X +C Y +A X +B X +A X +A X +A X +A X +A X +A Z +A Y +A Y +A Z +B X +A Y +B Z +C Y +B Z +C Z +A Z +C X +C Y +B X +B X +B Z +A X +A X +A Z +A X +A X +C Y +C Y +A Z +C Z +A Z +B Z +C X +A X +C Z +C Y +A X +C Z +B Y +B Z +A Y +A X +C Y +A X +C X +A Z +A X +A X +A Y +C Y +C Y +A X +A X +C Y +B Y +B Z +C Y +C Z +A Z +A Y +C Z +B X +C Y +C Y +A X +A X +A X +A X +B Z +A X +C Y +A X +A X +B Z +A X +A X +A X +A X +B X +A X +C Y +A X +A X +C Y +A Y +A X +C Y +A X +A Z +B X +A Y +A Z +C X +C Y +A X +C Z +C Y +A Y +A X +A X +C X +A X +B Y +A X +C Z +A X +B Y +A X +C X +C Z +A X +C Y +C X +C Y +B Z +A Z +A Y +A Y +C Y +C Z +C Y +B X +C Y +A X +C Y +C Z +A Z +C X +A X +A Y +B Y +C Z +C Y +B Z +C Z +C Y +B Z +C Y +A X +B Z +B Z +C Z +C X +C Y +A X +C Z +C Y +A X +C Y +A X +C Y +A X +B X +C Y +A X +B X +A Z +B Z +A X +A Z +A Y +A X +A Y +A X +C Z +A Y +A X +C Y +B X +A X +B Z +C Y +B X +A X +C Y +A X +A Y +C Y +B X +C Y +A Y +C Y +C Z +B Y +C Y +A Y +C Y +B X +A X +A X +A X +A Z +A X +B Z +A X +C Y +A Z +B X +A X +A X +A X +A X +A Z +C Y +B Z +A X +B Y +C Y +C Y +B Y +C X +A X +A X +A X +B X +B X +B X +C X +B Y +B Z +C Y +C Y +B X +B Z +A Z +A Y +A X +A X +A X +C Y +A X +C Y +C Z +C Z +C Z +A Y +C Y +A X +A X +B Z +A Y +C X +A Z +A X +A X +A X +A X +A X +A X +A Z +C Y +C Y +A Z +A X +A X +A X +A X +B X +C Y +A X +B X +C Y +A Y +A Y +C Y +A X +A Y +B Z +A X +A X +C Y +C Y +A Y +A X +A X +A Z +B X +A X +C Y +A X +B X +C X +A X +A X +A X +A X +A X +C Y +B Y +C Y +C Z +A Y +A X +C Y +B X +B X +A X +A Y +B X +B Y +C Y +C X +C X +A X +A X +A X +A X +A Z +C Z +A X +A X +A X +A Y +B X +B X +A X +A X +A X +A X +C Z +C Y +A Z +C Y +B X +A X +C Y +C Z +A Z +B Y +A X +B Y +A X +A Z +C Y +C Y +C Y +A X +C Y +A X +A Z +B Z +B Y +A Y +C X +C Z +A Y +C X +A X +A X +C X +A X +A Y +A X +A Z +A X +A X +A X +C Y +A Y +A Y +B Z +A X +C Y +C Y +B Y +A Z +C Z +B Z +A X +A X +C X +A Y +A Y +C Y +C Z +B X +B X +C Z +B Z +A X +C Z +A X +A Z +C Z +C Y +B Z +B Y +C Z +B Z +C Y +B X +C Y +A Z +C Y +B X +C Z +A Z +A X +B X +B Y +B Z +B Z +B X +C Y +A X +C X +A X +B X +B Z +A Z +A X +A Y +B Y +A X +C Y +A Z +B X +A Y +B X +A X +B Z +A X +C X +A X +C Y +B X +B Z +B Z +A X +A Z +B Y +A X +A X +B X +C Y +C Z +A X +A X +A X +C Z +C Y +A Z +B X +A Z +C Y +A X +A X +A Z +B X +C Y +A X +A X +A X +A X +B Z +A X +A Z +A X +C Y +C X +C Y +A X +B X +B Z +A X +C X +A X +A Y +A X +C Z +C Y +C Y +C Y +B X +B Z +C Y +A X +A Y +C Z +A X +C Y +B Y +B Y +A X +A X +A X +A X +C Y +B Z +C Z +C Y +A Y +B Y +C Y +A X +B X +A Y +C X +C Y +C Y +A Z +C Y +C Z +C Y +B X +C Y +B X +B X +C Y +B Z +A X +A X +B X +C Y +A Y +B Y +A X +A X +B Y +C Y +A X +B X +A X +A Y +B X +C Y +A Z +A X +C Y +A X +B Y +A Z +C Y +B Z +A Z +B Z +C X +A X +A Z +B X +B Y +A X +A Y +B X +C Y +C Y +C Y +C Y +A Z +C Z +A X +B Y +C Z +A X +C Y +B Y +C Z +C Y +A Z +A X +C Y +C Y +C Z +A X +C Y +B Y +B Z +B X +A X +C Z +C X +A Y +B X +A X +A X +A X +C Z +C Z +A Y +C Y +B Y +C X +B X +C X +A X +A X +B Y +A X +A X +C X +A Y +A X +C Y +A Y +B X +C Y +A X +C Z +A Z +A Y +A X +A Y +B Y +A X +A X +C Z +A Y +C Y +B Z +C Y +B Z +A X +B Z +B Z +A Y +B Z +B X +C X +A X +A X +B Y +A X +A X +A X +A X +B X +C Z +A X +A Y +B X +C X +C Y +A X +A X +C Y +A X +A X +C Z +C Z +B X +A Z +B Z +A X +A X +C Y +A Y +A X +A Z +A Y +C Y +A X +C Y +B X +A X +A X +A X +A Z +A Z +A X +B Z +A Z +C Z +B Y +A X +C Y +B Z +C Y +A X +B X +C Y +A X +C Y +A Z +A X +A Y +B X +C X +B X +A X +C Y +C Y +B X +B X +C Y +A X +A Y +B Y +A X +C X +C Y +A Y +C Y +C Z +A X +B Y +A Y +A X +A Z +A Y +C Y +A X +A X +B Z +B Y +B Y +A X +C Z +A Y +A X +B Z +C Z +B Z +A X +B X +C X +A X +A X +A X +A X +A X +C X +A X +A Z +A X +C Z +A X +A X +B Z +A Z +B Z +A Y +A X +C Y +A X +B Y +C Y +B Z +B Z +A X +B Z +C Y +B Z +A Z +B Y +B Z +B X +B Y +A X +B X +A X +C X +B Y +B Y +B X +B Z +C Y +C Y +B Z +A Z +A X +A X +C Y +A X +A X +A Y +A X +B Z +A X +A X +B Z +B Z +A X +A Z +A X +A X +A X +A Z +A Z +C Z +C Y +A Y +A X +C Z +C Z +B Y +B X +B Z +C Y +A X +B Z +A Z +A X +A X +C X +A X +C Y +C X +A Z +A Y +B Z +C Z +B Y +B X +C Z +A Z +B X +A X +A X +A X +A Z +B Y +B Z +A X +A Y +C Y +A X +A X +C Z +B Z +C Y +C X +C Y +C Y +B Z +A X +B X +A X +A Z +B Z +A X +B X +C Y +C Y +B Y +A X +A Y +C X +B X +C Z +B X +A X +C Y +A X +C Y +A X +B Z +C Y +B Z +A Z +A Z +C Z +C Y +A Z +C Y +A Z +C Y +B X +A X +B X +A X +C Y +C X +C Z +A X +A X +A X +B Y +A X +B Z +A X +A X +A X +C Y +C Y +A X +B X +C Y +A Z +A X +C Y +B X +C Z +C Y +C X +B X +A X +C X +C Y +A Y +B Z +B Y +B X +C Y +C Z +B Y +A X +C X +A X +B X +C Z +A X +A X +C Y +A Z +A X +C Y +A Z +C X +A X +C Y +A Z +A X +A X +A Y +A X +C Y +A X +C Y +A X +A Y +C Y +C Y +B Y +B Y +B Z +A X +B X +B Z +B X +A X +B X +A X +A X +A X +A X +C X +B X +B X +A X +A Y +A X +B Y +A X +A Z +B Z +A Y +A X +A X +C Y +B Z +C Y +A X +C Y +A X +C Y +B X +A Z +B X +A X +A Z +B Y +B Y +C X +C Y +A X +B X +C Z +C Z +A Y +A X +C Z +A X +A X +C Z +B X +C Y +A X +C X +C Z +C Z +B Z +A X +A X +A X +B X +A Y +B Z +A X +B Y +A Z +A X +B Z +B Y +B X +A X +A Y +C Z +A X +C Y +C Y +A Y +A Y +A Y +C Z +C Y +B X +A Y +A Z +A Y +A X +C Z +C Y +C Y +C X +B Y +A X +A X +A X +C Y +B Y +C X +C Y +A X +A Z +B Z +B Y +B Z +B Z +B X +A X +B Z +C Y +C Y +C Y +A X +A X +B Y +B Z +B Y +C Y +B Y +A X +C X +A Z +C Y +C Y +B X +A Y +A X +C Y +A Y +A Z +B X +C Y +C Z +A X +C Y +B X +B Y +A X +A X +A X +B Z +A X +C Z +C Y +B X +C Y +C Y -- cgit v1.2.3