Done day 13
authorNeil Smith <neil.git@njae.me.uk>
Sat, 14 Dec 2019 18:48:36 +0000 (19:48 +0100)
committerNeil Smith <neil.git@njae.me.uk>
Sat, 14 Dec 2019 18:48:36 +0000 (19:48 +0100)
advent13/package.yaml [new file with mode: 0644]
advent13/src/advent13.hs [new file with mode: 0644]
data/advent13.txt [new file with mode: 0644]
problems/day12.html [new file with mode: 0644]
problems/day13.html [new file with mode: 0644]
stack.yaml

diff --git a/advent13/package.yaml b/advent13/package.yaml
new file mode 100644 (file)
index 0000000..b10d19c
--- /dev/null
@@ -0,0 +1,61 @@
+# This YAML file describes your package. Stack will automatically generate a
+# Cabal file when you run `stack build`. See the hpack website for help with
+# this file: <https://github.com/sol/hpack>.
+
+name: advent13
+synopsis: Advent of Code
+version: '0.0.1'
+
+default-extensions:
+- AllowAmbiguousTypes
+- ApplicativeDo
+- BangPatterns
+- BlockArguments
+- DataKinds
+- DeriveFoldable
+- DeriveFunctor
+- DeriveGeneric
+- DeriveTraversable
+- EmptyCase
+- FlexibleContexts
+- FlexibleInstances
+- FunctionalDependencies
+- GADTs
+- GeneralizedNewtypeDeriving
+- ImplicitParams
+- KindSignatures
+- LambdaCase
+- MonadComprehensions
+- MonoLocalBinds
+- MultiParamTypeClasses
+- MultiWayIf
+- NegativeLiterals
+- NumDecimals
+- OverloadedLists
+- OverloadedStrings
+- PartialTypeSignatures
+- PatternGuards
+- PatternSynonyms
+- PolyKinds
+- RankNTypes
+- RecordWildCards
+- ScopedTypeVariables
+- TemplateHaskell
+- TransformListComp
+- TupleSections
+- TypeApplications
+- TypeInType
+- TypeOperators
+- ViewPatterns
+
+
+executables:
+  advent13:
+    main: advent13.hs
+    source-dirs: src
+    dependencies:
+    - base >= 2 && < 6
+    - text
+    - containers
+    - split
+    - intcode
diff --git a/advent13/src/advent13.hs b/advent13/src/advent13.hs
new file mode 100644 (file)
index 0000000..37a17b2
--- /dev/null
@@ -0,0 +1,160 @@
+import Debug.Trace
+
+import Intcode
+
+import qualified Data.Text.IO as TIO
+
+import qualified Data.Map.Strict as M
+-- import Data.Map.Strict ((!))
+import Data.List
+import Data.List.Split
+-- import Data.List
+-- import Data.Function (on)
+
+type Position = (Integer, Integer) -- x, y
+data Cell  = Empty | Wall | Block | Paddle | Ball deriving (Show, Eq, Ord)
+-- data Direction = North | East | South | West deriving (Show, Eq, Ord, Enum, Bounded)
+
+type Field = M.Map Position Cell
+
+data Game = Game 
+    { _machine :: Machine
+    , _executionState :: ExecutionState
+    , _currentInput :: [Integer]
+    , _machineOutput :: [Integer]
+    , _currentScore :: Integer
+    , _paddleX :: Integer
+    , _ballX :: Integer
+    } deriving (Eq)
+
+instance Show Game where
+  show g = "Game {<m>, _executionState = " ++ show (_executionState g) ++
+           ", _currentInput = " ++ show (_currentInput g) ++
+           ", _machineOutput = " ++ show (_machineOutput g) ++
+           ", _currentScore = " ++ show (_currentScore g) ++
+           ", _paddleX = " ++ show (_paddleX g) ++ 
+           ", _ballX = " ++ show (_ballX g) ++ 
+           " }"
+
+
+main :: IO ()
+main = do 
+        text <- TIO.readFile "data/advent13.txt"
+        let mem = parseMachineMemory text
+        -- print mem
+        print $ part1 mem
+        print $ part2 mem
+
+
+part1 mem = M.size $ M.filter (== Block) screen
+    where (_halted, _machine, output) = runProgram [] mem
+          (screen, _score) = buildScreen output
+
+part2 mem = _currentScore game
+    where mem' = [2] ++ (tail mem)
+          game0 = buildGame mem'
+          game = runGame game0
+
+
+buildScreen :: [Integer] -> (Field, Integer)
+buildScreen output = foldl' addCell (M.empty, 0) $ chunksOf 3 output
+
+addCell :: (Field, Integer) -> [Integer] -> (Field, Integer)
+addCell (screen, _s) [- 1 , 0, s] = (screen, s)
+addCell (screen, score) [x, y, c] = (M.insert (x, y) (cellOf c) screen, score)
+
+cellOf :: Integer -> Cell
+cellOf 0 = Empty
+cellOf 1 = Wall
+cellOf 2 = Block
+cellOf 3 = Paddle
+cellOf 4 = Ball
+
+
+buildGame mem = Game 
+    { _machine = makeMachine mem
+    , _executionState = Runnable
+    , _currentInput = []
+    , _machineOutput = []
+    , _currentScore = 0
+    , _paddleX = 0
+    , _ballX = 0
+    }
+
+runGame :: Game -> Game
+-- runGame game | trace (show (_currentScore game) ++ " " ++ show (_executionState game)) False = undefined
+runGame game0 = game
+    where game1 = runGameStep game0
+          game = if (_executionState game1 == Terminated)
+                 then game1
+                 else runGame game1
+
+runGameStep :: Game -> Game
+-- runGameStep game | trace (show (_currentScore game) ++ " " ++ show (_executionState game)) False = undefined
+runGameStep game0 = game
+    where game1 = runGameMachine game0
+          output = _machineOutput game1
+          (screen, score) = buildScreen output
+          cs = _currentScore game0
+          score' = if score > cs then score else cs
+          game2 = game1 { _currentScore = score' }
+          game = joystick game2 screen
+
+
+runGameMachine :: Game -> Game
+runGameMachine g = g { _machine = machine'
+                     , _executionState = halted
+                     , _machineOutput = output
+                     }
+    where   machine = _machine g
+            input = _currentInput g
+            (halted, machine', output) = runMachine input machine
+
+joystick :: Game -> Field -> Game
+joystick game screen = game {_currentInput = ci ++ [direction], 
+                              _paddleX = px, _ballX = bx,
+                              _executionState = termination}
+  where knownBall = M.filter (== Ball) screen
+        bx = if M.null knownBall
+             then _ballX game
+             else fst $ fst $ M.findMin knownBall
+        knownPaddle = M.filter (== Paddle) screen
+        px = if M.null knownPaddle
+             then _paddleX game
+             else fst $ fst $ M.findMin knownPaddle
+        termination = if _executionState game == Blocked
+                      then Runnable
+                      else _executionState game
+        ci = _currentInput game
+        direction = if bx > px 
+                    then 1
+                    else if bx < px
+                         then -1
+                         else 0
+
+
+ghcisetup text = game0
+    where mem = parseMachineMemory text
+          mem' = [2] ++ (tail mem)
+          game0 = buildGame mem'
+
+
+showScreen :: Field -> String
+showScreen screen = unlines rows
+    where   minX = minimum $ map fst $ M.keys screen
+            minY = minimum $ map snd $ M.keys screen
+            maxX = maximum $ map fst $ M.keys screen
+            maxY = maximum $ map snd $ M.keys screen
+            rows = [showScreenRow screen minX maxX y | y <- [minY..maxY]]
+
+showScreenRow :: Field -> Integer -> Integer -> Integer -> String
+showScreenRow screen minX maxX y = [showScreenCell screen x y | x <- [minX..maxX]] 
+
+showScreenCell :: Field -> Integer -> Integer -> Char
+showScreenCell screen x y = 
+    case (M.findWithDefault Empty (x, y) screen) of 
+        Empty -> ' '
+        Wall -> '#'
+        Block -> '*'
+        Paddle -> '='
+        Ball -> '+'
diff --git a/data/advent13.txt b/data/advent13.txt
new file mode 100644 (file)
index 0000000..44f05b6
--- /dev/null
@@ -0,0 +1 @@
+1,380,379,385,1008,2799,419438,381,1005,381,12,99,109,2800,1102,0,1,383,1101,0,0,382,20102,1,382,1,21001,383,0,2,21101,0,37,0,1106,0,578,4,382,4,383,204,1,1001,382,1,382,1007,382,45,381,1005,381,22,1001,383,1,383,1007,383,24,381,1005,381,18,1006,385,69,99,104,-1,104,0,4,386,3,384,1007,384,0,381,1005,381,94,107,0,384,381,1005,381,108,1105,1,161,107,1,392,381,1006,381,161,1102,-1,1,384,1106,0,119,1007,392,43,381,1006,381,161,1102,1,1,384,20101,0,392,1,21101,22,0,2,21102,1,0,3,21101,0,138,0,1106,0,549,1,392,384,392,21001,392,0,1,21102,1,22,2,21102,3,1,3,21102,1,161,0,1105,1,549,1101,0,0,384,20001,388,390,1,20102,1,389,2,21102,1,180,0,1105,1,578,1206,1,213,1208,1,2,381,1006,381,205,20001,388,390,1,20102,1,389,2,21102,1,205,0,1106,0,393,1002,390,-1,390,1102,1,1,384,21002,388,1,1,20001,389,391,2,21101,0,228,0,1106,0,578,1206,1,261,1208,1,2,381,1006,381,253,21001,388,0,1,20001,389,391,2,21101,0,253,0,1105,1,393,1002,391,-1,391,1102,1,1,384,1005,384,161,20001,388,390,1,20001,389,391,2,21102,1,279,0,1106,0,578,1206,1,316,1208,1,2,381,1006,381,304,20001,388,390,1,20001,389,391,2,21101,0,304,0,1105,1,393,1002,390,-1,390,1002,391,-1,391,1101,0,1,384,1005,384,161,20101,0,388,1,20101,0,389,2,21101,0,0,3,21102,338,1,0,1106,0,549,1,388,390,388,1,389,391,389,21002,388,1,1,20101,0,389,2,21102,4,1,3,21101,365,0,0,1106,0,549,1007,389,23,381,1005,381,75,104,-1,104,0,104,0,99,0,1,0,0,0,0,0,0,296,20,19,1,1,22,109,3,22101,0,-2,1,21202,-1,1,2,21102,1,0,3,21102,414,1,0,1105,1,549,21201,-2,0,1,21202,-1,1,2,21102,429,1,0,1106,0,601,2101,0,1,435,1,386,0,386,104,-1,104,0,4,386,1001,387,-1,387,1005,387,451,99,109,-3,2106,0,0,109,8,22202,-7,-6,-3,22201,-3,-5,-3,21202,-4,64,-2,2207,-3,-2,381,1005,381,492,21202,-2,-1,-1,22201,-3,-1,-3,2207,-3,-2,381,1006,381,481,21202,-4,8,-2,2207,-3,-2,381,1005,381,518,21202,-2,-1,-1,22201,-3,-1,-3,2207,-3,-2,381,1006,381,507,2207,-3,-4,381,1005,381,540,21202,-4,-1,-1,22201,-3,-1,-3,2207,-3,-4,381,1006,381,529,21201,-3,0,-7,109,-8,2106,0,0,109,4,1202,-2,45,566,201,-3,566,566,101,639,566,566,1202,-1,1,0,204,-3,204,-2,204,-1,109,-4,2106,0,0,109,3,1202,-1,45,594,201,-2,594,594,101,639,594,594,20102,1,0,-2,109,-3,2106,0,0,109,3,22102,24,-2,1,22201,1,-1,1,21102,1,547,2,21102,850,1,3,21102,1,1080,4,21102,630,1,0,1106,0,456,21201,1,1719,-2,109,-3,2105,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,2,0,2,0,0,2,2,2,2,2,2,0,2,0,0,0,0,0,2,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,0,0,2,0,1,1,0,0,2,2,0,0,2,2,0,0,0,2,2,0,2,0,2,0,0,0,0,0,2,0,0,2,2,2,0,2,0,2,0,2,0,2,0,0,0,0,0,2,0,1,1,0,0,2,0,2,0,0,0,0,2,2,0,0,2,2,2,0,2,2,0,0,0,2,2,2,2,2,2,0,0,2,0,2,0,2,2,2,2,2,0,0,0,0,1,1,0,2,2,0,0,0,2,0,2,0,0,2,2,2,2,0,2,0,2,2,0,0,0,0,2,0,0,0,2,2,0,0,0,2,0,2,0,0,0,0,2,0,0,1,1,0,2,2,2,0,0,2,2,0,0,2,0,0,0,2,2,0,0,0,0,0,0,0,2,0,0,0,2,2,0,2,0,2,0,0,0,2,2,2,0,2,2,0,1,1,0,0,0,2,2,2,2,0,0,0,2,0,0,2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,2,0,2,2,0,0,1,1,0,0,0,0,0,0,2,2,2,2,0,0,0,0,2,2,2,0,0,2,0,2,0,0,2,0,2,0,2,0,2,0,0,0,0,0,2,0,0,2,2,2,0,1,1,0,2,2,2,0,2,0,0,0,2,0,2,2,2,2,2,0,2,2,0,2,0,0,2,0,2,0,0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,0,1,1,0,0,2,0,2,2,2,2,0,0,2,0,0,2,0,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0,0,2,0,1,1,0,0,0,0,2,0,2,2,0,0,2,2,0,2,0,0,0,0,2,0,2,2,0,2,0,2,2,2,0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,1,1,0,2,0,2,0,2,2,2,0,2,2,2,2,0,2,0,0,2,0,2,0,0,2,2,2,0,0,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,1,1,0,2,2,2,2,2,2,2,0,2,2,0,2,0,0,2,0,0,2,0,0,0,0,0,0,2,0,2,2,2,2,0,0,0,0,0,2,2,2,0,2,2,0,1,1,0,0,2,0,0,2,0,0,2,0,2,0,0,0,0,2,0,2,2,2,0,0,0,2,0,0,2,0,2,0,2,2,0,0,2,2,0,2,0,0,2,2,0,1,1,0,0,0,2,2,0,2,2,2,0,2,0,2,0,0,0,0,2,2,2,2,2,2,0,2,0,2,0,0,2,0,2,2,0,0,0,2,0,0,0,2,2,0,1,1,0,2,0,0,2,0,0,2,2,0,2,2,2,2,0,0,2,0,0,2,0,0,2,2,0,0,2,0,0,0,0,2,0,0,0,2,2,2,2,2,0,2,0,1,1,0,2,0,0,0,0,0,0,2,2,0,0,2,2,0,0,2,0,0,2,2,0,0,0,2,0,2,2,0,0,2,0,2,0,2,2,2,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,39,45,82,25,27,92,1,12,84,89,45,7,17,8,90,61,27,2,9,32,79,47,45,7,90,22,83,77,1,47,86,47,94,50,27,63,37,1,77,68,68,15,33,11,96,37,66,65,17,75,51,90,52,14,54,36,46,2,56,3,74,76,43,3,43,38,42,27,85,72,57,24,90,94,2,26,9,23,60,46,51,10,78,60,46,15,2,86,29,97,97,29,95,10,7,74,16,85,33,31,91,52,49,98,61,9,56,70,25,36,35,38,73,19,36,8,53,5,46,18,10,33,19,44,31,68,98,74,55,37,97,49,80,23,61,49,71,95,29,5,70,16,71,11,71,55,75,41,35,9,35,37,90,81,68,8,27,75,87,6,46,89,77,77,82,11,89,81,43,46,90,24,2,76,20,87,54,91,18,13,21,81,90,16,66,95,26,95,26,23,17,83,28,70,7,54,75,56,49,31,79,13,98,38,88,47,59,13,79,95,59,64,67,68,20,44,55,23,23,26,91,86,59,56,49,57,13,31,36,30,46,45,65,12,38,68,68,38,71,15,44,87,34,75,12,96,20,48,8,68,58,63,37,15,53,96,47,55,70,46,61,66,11,54,60,70,73,65,57,96,13,32,55,44,76,57,50,19,56,57,41,37,51,58,70,48,85,91,89,28,33,22,47,22,77,17,78,11,77,83,95,19,26,73,72,4,48,62,58,32,33,94,34,71,55,92,22,60,12,92,9,49,8,22,62,37,40,73,37,70,26,10,52,38,35,40,1,5,33,74,59,35,10,53,75,43,98,86,11,95,73,28,31,20,46,84,88,1,96,77,14,45,62,98,38,44,83,7,73,39,17,80,12,97,87,83,95,24,13,13,67,12,42,86,75,43,50,63,72,28,48,44,14,31,45,19,98,55,30,27,81,23,17,78,94,1,75,4,13,7,25,86,3,36,80,71,6,8,52,26,10,4,70,95,12,52,71,9,98,23,14,56,11,45,82,50,52,48,2,34,4,32,50,64,94,13,70,24,98,48,48,80,43,27,95,89,14,36,89,9,83,34,96,13,27,86,82,45,78,82,36,58,86,88,47,33,92,27,16,87,62,14,30,35,44,56,20,39,48,83,30,43,33,68,70,58,83,45,60,16,17,57,9,56,21,36,55,36,93,95,84,50,54,29,42,72,67,59,4,61,79,3,67,60,9,41,12,85,4,69,31,70,78,7,86,33,54,39,38,47,88,4,31,97,35,41,22,88,67,76,80,52,33,11,42,67,26,84,96,31,88,58,38,35,94,78,47,83,72,85,18,33,57,46,9,14,81,71,79,12,1,47,16,8,25,78,21,94,61,33,73,57,21,28,32,5,11,40,92,56,11,18,83,84,12,53,66,65,24,61,90,77,76,25,48,83,65,82,45,74,96,23,2,66,91,66,95,48,8,21,60,21,60,59,80,44,40,71,69,25,50,55,22,36,82,86,8,37,2,67,54,66,64,17,5,25,23,9,52,41,38,28,23,97,44,26,39,68,19,82,20,43,85,40,63,82,56,18,60,15,64,92,72,48,46,87,7,94,98,21,63,85,24,21,16,66,60,17,49,83,49,69,36,34,39,66,43,85,3,33,47,26,29,27,7,5,76,12,5,21,53,25,52,83,69,97,38,53,50,15,80,27,92,13,15,66,2,20,71,90,52,51,14,86,85,69,51,15,81,69,31,67,91,95,32,62,46,42,98,86,74,1,24,47,65,90,16,65,94,27,73,45,80,22,18,95,75,35,31,41,84,57,35,35,86,21,47,46,73,48,48,32,65,98,44,81,79,10,43,76,64,77,74,27,91,25,68,40,77,68,22,64,63,15,57,50,33,42,80,15,62,24,16,34,92,37,95,55,80,34,29,75,83,27,47,57,55,98,45,42,32,28,15,45,79,73,98,62,58,8,3,96,13,72,64,49,77,32,86,92,5,2,26,7,6,73,23,73,79,46,4,46,9,76,1,86,60,90,40,32,40,83,29,78,1,72,66,12,13,72,31,11,31,84,41,5,63,6,75,75,57,30,8,90,69,10,79,98,21,90,65,23,52,11,27,48,62,13,80,85,53,77,45,69,90,88,27,87,95,58,69,23,57,73,54,35,12,39,96,86,68,64,30,82,21,60,20,10,54,31,66,96,17,16,85,4,35,21,98,31,55,11,12,2,5,47,19,1,76,27,60,29,46,36,90,21,62,47,64,9,65,63,70,11,64,38,57,37,96,59,40,23,77,87,89,98,37,24,31,52,38,76,54,29,85,4,31,76,9,74,50,48,4,32,76,24,19,44,51,63,34,53,80,42,27,46,33,58,27,64,84,60,90,98,46,72,25,77,59,59,6,33,29,50,7,1,71,48,31,3,47,34,54,20,55,22,20,14,70,77,47,49,66,40,25,87,36,51,3,59,80,66,89,98,61,26,22,23,22,96,419438
diff --git a/problems/day12.html b/problems/day12.html
new file mode 100644 (file)
index 0000000..8416984
--- /dev/null
@@ -0,0 +1,1263 @@
+From: <Saved by Blink>\r
+Snapshot-Content-Location: https://adventofcode.com/2019/day/12\r
+Subject: Day 12 - Advent of Code 2019\r
+Date: Fri, 13 Dec 2019 14:44:47 -0000\r
+MIME-Version: 1.0\r
+Content-Type: multipart/related;\r
+       type="text/html";\r
+       boundary="----MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----"\r
+\r
+\r
+------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----\r
+Content-Type: text/html\r
+Content-ID: <frame-62F5C8547A9C17350C9F559EEE8495CA@mhtml.blink>\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://adventofcode.com/2019/day/12\r
+\r
+<!DOCTYPE html><html lang=3D"en-us"><head><meta http-equiv=3D"Content-Type"=\r
+ content=3D"text/html; charset=3DUTF-8">\r
+\r
+<title>Day 12 - Advent of Code 2019</title>\r
+<!--[if lt IE 9]><script src=3D"/static/html5.js"></script><![endif]-->\r
+<link href=3D"https://fonts.googleapis.com/css?family=3DSource+Code+Pro:300=\r
+&amp;subset=3Dlatin,latin-ext" rel=3D"stylesheet" type=3D"text/css">\r
+<link rel=3D"stylesheet" type=3D"text/css" href=3D"https://adventofcode.com=\r
+/static/style.css?24">\r
+<link rel=3D"stylesheet alternate" type=3D"text/css" href=3D"https://advent=\r
+ofcode.com/static/highcontrast.css?0" title=3D"High Contrast">\r
+<link rel=3D"shortcut icon" href=3D"https://adventofcode.com/favicon.png">\r
+</head><!--\r
+\r
+\r
+\r
+\r
+Oh, hello!  Funny seeing you here.\r
+\r
+I appreciate your enthusiasm, but you aren't going to find much down here.\r
+There certainly aren't clues to any of the puzzles.  The best surprises don=\r
+'t\r
+even appear in the source until you unlock them for real.\r
+\r
+Please be careful with automated requests; I'm not a massive company, and I=\r
+ can\r
+only take so much traffic.  Please be considerate so that everyone gets to =\r
+play.\r
+\r
+If you're curious about how Advent of Code works, it's running on some cust=\r
+om\r
+Perl code. Other than a few integrations (auth, analytics, ads, social medi=\r
+a),\r
+I built the whole thing myself, including the design, animations, prose, an=\r
+d\r
+all of the puzzles.\r
+\r
+The puzzles are most of the work; preparing a new calendar and a new set of\r
+puzzles each year takes all of my free time for 4-5 months. A lot of effort\r
+went into building this thing - I hope you're enjoying playing it as much a=\r
+s I\r
+enjoyed making it for you!\r
+\r
+If you'd like to hang out, I'm @ericwastl on Twitter.\r
+\r
+- Eric Wastl\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+-->\r
+<body>\r
+<header><div><h1 class=3D"title-global"><a href=3D"https://adventofcode.com=\r
+/" data-ss1576248183=3D"1">Advent of Code</a></h1><nav><ul><li><a href=3D"h=\r
+ttps://adventofcode.com/2019/about" data-ss1576248183=3D"1">[About]</a></li=\r
+><li><a href=3D"https://adventofcode.com/2019/events" data-ss1576248183=3D"=\r
+1">[Events]</a></li><li><a href=3D"https://teespring.com/adventofcode-2019"=\r
+ target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=3D"1">[Shop]</a></l=\r
+i><li><a href=3D"https://adventofcode.com/2019/settings" data-ss1576248183=\r
+=3D"1">[Settings]</a></li><li><a href=3D"https://adventofcode.com/2019/auth=\r
+/logout" data-ss1576248183=3D"1">[Log Out]</a></li></ul></nav><div class=3D=\r
+"user">Neil Smith <a href=3D"https://adventofcode.com/2019/support" class=\r
+=3D"supporter-badge" title=3D"Advent of Code Supporter" data-ss1576248183=\r
+=3D"1">(AoC++)</a> <span class=3D"star-count">24*</span></div></div><div><h=\r
+1 class=3D"title-event">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span cla=\r
+ss=3D"title-event-wrap">=CE=BBy.</span><a href=3D"https://adventofcode.com/=\r
+2019" data-ss1576248183=3D"1">2019</a><span class=3D"title-event-wrap"></sp=\r
+an></h1><nav><ul><li><a href=3D"https://adventofcode.com/2019" data-ss15762=\r
+48183=3D"1">[Calendar]</a></li><li><a href=3D"https://adventofcode.com/2019=\r
+/support" data-ss1576248183=3D"1">[AoC++]</a></li><li><a href=3D"https://ad=\r
+ventofcode.com/2019/sponsors" data-ss1576248183=3D"1">[Sponsors]</a></li><l=\r
+i><a href=3D"https://adventofcode.com/2019/leaderboard" data-ss1576248183=\r
+=3D"1">[Leaderboard]</a></li><li><a href=3D"https://adventofcode.com/2019/s=\r
+tats" data-ss1576248183=3D"1">[Stats]</a></li></ul></nav></div></header>\r
+\r
+<div id=3D"sidebar">\r
+<div id=3D"sponsor"><div class=3D"quiet">Our <a href=3D"https://adventofcod=\r
+e.com/2019/sponsors" data-ss1576248183=3D"1">sponsors</a> help make Advent =\r
+of Code possible:</div><div class=3D"sponsor"><a href=3D"https://about.sour=\r
+cegraph.com/" target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=3D"1">=\r
+Sourcegraph</a> - Build the new standard developer platform on a globally-d=\r
+istributed remote-first team. We value ownership, autonomy, communication, =\r
+and transparency.</div></div>\r
+</div><!--/sidebar-->\r
+\r
+<main>\r
+\r
+<article class=3D"day-desc"><h2>--- Day 12: The N-Body Problem ---</h2><p>T=\r
+he space near Jupiter is not a very safe place; you need to be careful of a=\r
+ <a href=3D"https://en.wikipedia.org/wiki/Great_Red_Spot" rel=3D"noreferrer=\r
+" data-ss1576248183=3D"1">big distracting red spot</a>, extreme <a href=3D"=\r
+https://en.wikipedia.org/wiki/Magnetosphere_of_Jupiter" rel=3D"noreferrer" =\r
+data-ss1576248183=3D"1">radiation</a>, and a <a href=3D"https://en.wikipedi=\r
+a.org/wiki/Moons_of_Jupiter#List" rel=3D"noreferrer" data-ss1576248183=3D"1=\r
+">whole lot of moons</a> swirling around.  You decide to start by tracking =\r
+the four largest moons: <em>Io</em>, <em>Europa</em>, <em>Ganymede</em>, an=\r
+d <em>Callisto</em>.</p>\r
+<p>After a brief scan, you calculate the <em>position of each moon</em> (yo=\r
+ur puzzle input). You just need to <em>simulate their motion</em> so you ca=\r
+n <span title=3D"Or you could just leave, but where's the fun in that?">avo=\r
+id them</span>.</p>\r
+<p>Each moon has a 3-dimensional position (<code>x</code>, <code>y</code>, =\r
+and <code>z</code>) and a 3-dimensional velocity.  The position of each moo=\r
+n is given in your scan; the <code>x</code>, <code>y</code>, and <code>z</c=\r
+ode> velocity of each moon starts at <code>0</code>.</p>\r
+<p>Simulate the motion of the moons in <em>time steps</em>. Within each tim=\r
+e step, first update the velocity of every moon by applying <em>gravity</em=\r
+>. Then, once all moons' velocities have been updated, update the position =\r
+of every moon by applying <em>velocity</em>. Time progresses by one step on=\r
+ce all of the positions are updated.</p>\r
+<p>To apply <em>gravity</em>, consider every <em>pair</em> of moons. On eac=\r
+h axis (<code>x</code>, <code>y</code>, and <code>z</code>), the velocity o=\r
+f each moon changes by <em>exactly +1 or -1</em> to pull the moons together=\r
+.  For example, if Ganymede has an <code>x</code> position of <code>3</code=\r
+>, and Callisto has a <code>x</code> position of <code>5</code>, then Ganym=\r
+ede's <code>x</code> velocity <em>changes by +1</em> (because <code>5 &gt; =\r
+3</code>) and Callisto's <code>x</code> velocity <em>changes by -1</em> (be=\r
+cause <code>3 &lt; 5</code>). However, if the positions on a given axis are=\r
+ the same, the velocity on that axis <em>does not change</em> for that pair=\r
+ of moons.</p>\r
+<p>Once all gravity has been applied, apply <em>velocity</em>: simply add t=\r
+he velocity of each moon to its own position. For example, if Europa has a =\r
+position of <code>x=3D1, y=3D2, z=3D3</code> and a velocity of <code>x=3D-2=\r
+, y=3D0,z=3D3</code>, then its new position would be <code>x=3D-1, y=3D2, z=\r
+=3D6</code>. This process does not modify the velocity of any moon.</p>\r
+<p>For example, suppose your scan reveals the following positions:</p>\r
+<pre><code>&lt;x=3D-1, y=3D0, z=3D2&gt;\r
+&lt;x=3D2, y=3D-10, z=3D-7&gt;\r
+&lt;x=3D4, y=3D-8, z=3D8&gt;\r
+&lt;x=3D3, y=3D5, z=3D-1&gt;\r
+</code></pre>\r
+<p>Simulating the motion of these moons would produce the following:</p>\r
+<pre><code>After 0 steps:\r
+pos=3D&lt;x=3D-1, y=3D  0, z=3D 2&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D 0&gt;\r
+pos=3D&lt;x=3D 2, y=3D-10, z=3D-7&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D 0&gt;\r
+pos=3D&lt;x=3D 4, y=3D -8, z=3D 8&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D 0&gt;\r
+pos=3D&lt;x=3D 3, y=3D  5, z=3D-1&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D 0&gt;\r
+\r
+After 1 step:\r
+pos=3D&lt;x=3D 2, y=3D-1, z=3D 1&gt;, vel=3D&lt;x=3D 3, y=3D-1, z=3D-1&gt;\r
+pos=3D&lt;x=3D 3, y=3D-7, z=3D-4&gt;, vel=3D&lt;x=3D 1, y=3D 3, z=3D 3&gt;\r
+pos=3D&lt;x=3D 1, y=3D-7, z=3D 5&gt;, vel=3D&lt;x=3D-3, y=3D 1, z=3D-3&gt;\r
+pos=3D&lt;x=3D 2, y=3D 2, z=3D 0&gt;, vel=3D&lt;x=3D-1, y=3D-3, z=3D 1&gt;\r
+\r
+After 2 steps:\r
+pos=3D&lt;x=3D 5, y=3D-3, z=3D-1&gt;, vel=3D&lt;x=3D 3, y=3D-2, z=3D-2&gt;\r
+pos=3D&lt;x=3D 1, y=3D-2, z=3D 2&gt;, vel=3D&lt;x=3D-2, y=3D 5, z=3D 6&gt;\r
+pos=3D&lt;x=3D 1, y=3D-4, z=3D-1&gt;, vel=3D&lt;x=3D 0, y=3D 3, z=3D-6&gt;\r
+pos=3D&lt;x=3D 1, y=3D-4, z=3D 2&gt;, vel=3D&lt;x=3D-1, y=3D-6, z=3D 2&gt;\r
+\r
+After 3 steps:\r
+pos=3D&lt;x=3D 5, y=3D-6, z=3D-1&gt;, vel=3D&lt;x=3D 0, y=3D-3, z=3D 0&gt;\r
+pos=3D&lt;x=3D 0, y=3D 0, z=3D 6&gt;, vel=3D&lt;x=3D-1, y=3D 2, z=3D 4&gt;\r
+pos=3D&lt;x=3D 2, y=3D 1, z=3D-5&gt;, vel=3D&lt;x=3D 1, y=3D 5, z=3D-4&gt;\r
+pos=3D&lt;x=3D 1, y=3D-8, z=3D 2&gt;, vel=3D&lt;x=3D 0, y=3D-4, z=3D 0&gt;\r
+\r
+After 4 steps:\r
+pos=3D&lt;x=3D 2, y=3D-8, z=3D 0&gt;, vel=3D&lt;x=3D-3, y=3D-2, z=3D 1&gt;\r
+pos=3D&lt;x=3D 2, y=3D 1, z=3D 7&gt;, vel=3D&lt;x=3D 2, y=3D 1, z=3D 1&gt;\r
+pos=3D&lt;x=3D 2, y=3D 3, z=3D-6&gt;, vel=3D&lt;x=3D 0, y=3D 2, z=3D-1&gt;\r
+pos=3D&lt;x=3D 2, y=3D-9, z=3D 1&gt;, vel=3D&lt;x=3D 1, y=3D-1, z=3D-1&gt;\r
+\r
+After 5 steps:\r
+pos=3D&lt;x=3D-1, y=3D-9, z=3D 2&gt;, vel=3D&lt;x=3D-3, y=3D-1, z=3D 2&gt;\r
+pos=3D&lt;x=3D 4, y=3D 1, z=3D 5&gt;, vel=3D&lt;x=3D 2, y=3D 0, z=3D-2&gt;\r
+pos=3D&lt;x=3D 2, y=3D 2, z=3D-4&gt;, vel=3D&lt;x=3D 0, y=3D-1, z=3D 2&gt;\r
+pos=3D&lt;x=3D 3, y=3D-7, z=3D-1&gt;, vel=3D&lt;x=3D 1, y=3D 2, z=3D-2&gt;\r
+\r
+After 6 steps:\r
+pos=3D&lt;x=3D-1, y=3D-7, z=3D 3&gt;, vel=3D&lt;x=3D 0, y=3D 2, z=3D 1&gt;\r
+pos=3D&lt;x=3D 3, y=3D 0, z=3D 0&gt;, vel=3D&lt;x=3D-1, y=3D-1, z=3D-5&gt;\r
+pos=3D&lt;x=3D 3, y=3D-2, z=3D 1&gt;, vel=3D&lt;x=3D 1, y=3D-4, z=3D 5&gt;\r
+pos=3D&lt;x=3D 3, y=3D-4, z=3D-2&gt;, vel=3D&lt;x=3D 0, y=3D 3, z=3D-1&gt;\r
+\r
+After 7 steps:\r
+pos=3D&lt;x=3D 2, y=3D-2, z=3D 1&gt;, vel=3D&lt;x=3D 3, y=3D 5, z=3D-2&gt;\r
+pos=3D&lt;x=3D 1, y=3D-4, z=3D-4&gt;, vel=3D&lt;x=3D-2, y=3D-4, z=3D-4&gt;\r
+pos=3D&lt;x=3D 3, y=3D-7, z=3D 5&gt;, vel=3D&lt;x=3D 0, y=3D-5, z=3D 4&gt;\r
+pos=3D&lt;x=3D 2, y=3D 0, z=3D 0&gt;, vel=3D&lt;x=3D-1, y=3D 4, z=3D 2&gt;\r
+\r
+After 8 steps:\r
+pos=3D&lt;x=3D 5, y=3D 2, z=3D-2&gt;, vel=3D&lt;x=3D 3, y=3D 4, z=3D-3&gt;\r
+pos=3D&lt;x=3D 2, y=3D-7, z=3D-5&gt;, vel=3D&lt;x=3D 1, y=3D-3, z=3D-1&gt;\r
+pos=3D&lt;x=3D 0, y=3D-9, z=3D 6&gt;, vel=3D&lt;x=3D-3, y=3D-2, z=3D 1&gt;\r
+pos=3D&lt;x=3D 1, y=3D 1, z=3D 3&gt;, vel=3D&lt;x=3D-1, y=3D 1, z=3D 3&gt;\r
+\r
+After 9 steps:\r
+pos=3D&lt;x=3D 5, y=3D 3, z=3D-4&gt;, vel=3D&lt;x=3D 0, y=3D 1, z=3D-2&gt;\r
+pos=3D&lt;x=3D 2, y=3D-9, z=3D-3&gt;, vel=3D&lt;x=3D 0, y=3D-2, z=3D 2&gt;\r
+pos=3D&lt;x=3D 0, y=3D-8, z=3D 4&gt;, vel=3D&lt;x=3D 0, y=3D 1, z=3D-2&gt;\r
+pos=3D&lt;x=3D 1, y=3D 1, z=3D 5&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D 2&gt;\r
+\r
+After 10 steps:\r
+pos=3D&lt;x=3D 2, y=3D 1, z=3D-3&gt;, vel=3D&lt;x=3D-3, y=3D-2, z=3D 1&gt;\r
+pos=3D&lt;x=3D 1, y=3D-8, z=3D 0&gt;, vel=3D&lt;x=3D-1, y=3D 1, z=3D 3&gt;\r
+pos=3D&lt;x=3D 3, y=3D-6, z=3D 1&gt;, vel=3D&lt;x=3D 3, y=3D 2, z=3D-3&gt;\r
+pos=3D&lt;x=3D 2, y=3D 0, z=3D 4&gt;, vel=3D&lt;x=3D 1, y=3D-1, z=3D-1&gt;\r
+</code></pre>\r
+<p>Then, it might help to calculate the <em>total energy in the system</em>=\r
+. The total energy for a single moon is its <em>potential energy</em> multi=\r
+plied by its <em>kinetic energy</em>. A moon's <em>potential energy</em> is=\r
+ the sum of the <a href=3D"https://en.wikipedia.org/wiki/Absolute_value" re=\r
+l=3D"noreferrer" data-ss1576248183=3D"1">absolute values</a> of its <code>x=\r
+</code>, <code>y</code>, and <code>z</code> position coordinates. A moon's =\r
+<em>kinetic energy</em> is the sum of the absolute values of its velocity c=\r
+oordinates.  Below, each line shows the calculations for a moon's potential=\r
+ energy (<code>pot</code>), kinetic energy (<code>kin</code>), and total en=\r
+ergy:</p>\r
+<pre><code>Energy after 10 steps:\r
+pot: 2 + 1 + 3 =3D  6;   kin: 3 + 2 + 1 =3D 6;   total:  6 * 6 =3D 36\r
+pot: 1 + 8 + 0 =3D  9;   kin: 1 + 1 + 3 =3D 5;   total:  9 * 5 =3D 45\r
+pot: 3 + 6 + 1 =3D 10;   kin: 3 + 2 + 3 =3D 8;   total: 10 * 8 =3D 80\r
+pot: 2 + 0 + 4 =3D  6;   kin: 1 + 1 + 1 =3D 3;   total:  6 * 3 =3D 18\r
+Sum of total energy: 36 + 45 + 80 + 18 =3D <em>179</em>\r
+</code></pre>\r
+<p>In the above example, adding together the total energy for all moons aft=\r
+er 10 steps produces the total energy in the system, <code><em>179</em></co=\r
+de>.</p>\r
+<p>Here's a second example:</p>\r
+<pre><code>&lt;x=3D-8, y=3D-10, z=3D0&gt;\r
+&lt;x=3D5, y=3D5, z=3D10&gt;\r
+&lt;x=3D2, y=3D-7, z=3D3&gt;\r
+&lt;x=3D9, y=3D-8, z=3D-3&gt;\r
+</code></pre>\r
+<p>Every ten steps of simulation for 100 steps produces:</p>\r
+<pre><code>After 0 steps:\r
+pos=3D&lt;x=3D -8, y=3D-10, z=3D  0&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  5, y=3D  5, z=3D 10&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  2, y=3D -7, z=3D  3&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  9, y=3D -8, z=3D -3&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+\r
+After 10 steps:\r
+pos=3D&lt;x=3D -9, y=3D-10, z=3D  1&gt;, vel=3D&lt;x=3D -2, y=3D -2, z=3D -=\r
+1&gt;\r
+pos=3D&lt;x=3D  4, y=3D 10, z=3D  9&gt;, vel=3D&lt;x=3D -3, y=3D  7, z=3D -=\r
+2&gt;\r
+pos=3D&lt;x=3D  8, y=3D-10, z=3D -3&gt;, vel=3D&lt;x=3D  5, y=3D -1, z=3D -=\r
+2&gt;\r
+pos=3D&lt;x=3D  5, y=3D-10, z=3D  3&gt;, vel=3D&lt;x=3D  0, y=3D -4, z=3D  =\r
+5&gt;\r
+\r
+After 20 steps:\r
+pos=3D&lt;x=3D-10, y=3D  3, z=3D -4&gt;, vel=3D&lt;x=3D -5, y=3D  2, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  5, y=3D-25, z=3D  6&gt;, vel=3D&lt;x=3D  1, y=3D  1, z=3D -=\r
+4&gt;\r
+pos=3D&lt;x=3D 13, y=3D  1, z=3D  1&gt;, vel=3D&lt;x=3D  5, y=3D -2, z=3D  =\r
+2&gt;\r
+pos=3D&lt;x=3D  0, y=3D  1, z=3D  7&gt;, vel=3D&lt;x=3D -1, y=3D -1, z=3D  =\r
+2&gt;\r
+\r
+After 30 steps:\r
+pos=3D&lt;x=3D 15, y=3D -6, z=3D -9&gt;, vel=3D&lt;x=3D -5, y=3D  4, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D -4, y=3D-11, z=3D  3&gt;, vel=3D&lt;x=3D -3, y=3D-10, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  0, y=3D -1, z=3D 11&gt;, vel=3D&lt;x=3D  7, y=3D  4, z=3D  =\r
+3&gt;\r
+pos=3D&lt;x=3D -3, y=3D -2, z=3D  5&gt;, vel=3D&lt;x=3D  1, y=3D  2, z=3D -=\r
+3&gt;\r
+\r
+After 40 steps:\r
+pos=3D&lt;x=3D 14, y=3D-12, z=3D -4&gt;, vel=3D&lt;x=3D 11, y=3D  3, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D -1, y=3D 18, z=3D  8&gt;, vel=3D&lt;x=3D -5, y=3D  2, z=3D  =\r
+3&gt;\r
+pos=3D&lt;x=3D -5, y=3D-14, z=3D  8&gt;, vel=3D&lt;x=3D  1, y=3D -2, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  0, y=3D-12, z=3D -2&gt;, vel=3D&lt;x=3D -7, y=3D -3, z=3D -=\r
+3&gt;\r
+\r
+After 50 steps:\r
+pos=3D&lt;x=3D-23, y=3D  4, z=3D  1&gt;, vel=3D&lt;x=3D -7, y=3D -1, z=3D  =\r
+2&gt;\r
+pos=3D&lt;x=3D 20, y=3D-31, z=3D 13&gt;, vel=3D&lt;x=3D  5, y=3D  3, z=3D  =\r
+4&gt;\r
+pos=3D&lt;x=3D -4, y=3D  6, z=3D  1&gt;, vel=3D&lt;x=3D -1, y=3D  1, z=3D -=\r
+3&gt;\r
+pos=3D&lt;x=3D 15, y=3D  1, z=3D -5&gt;, vel=3D&lt;x=3D  3, y=3D -3, z=3D -=\r
+3&gt;\r
+\r
+After 60 steps:\r
+pos=3D&lt;x=3D 36, y=3D-10, z=3D  6&gt;, vel=3D&lt;x=3D  5, y=3D  0, z=3D  =\r
+3&gt;\r
+pos=3D&lt;x=3D-18, y=3D 10, z=3D  9&gt;, vel=3D&lt;x=3D -3, y=3D -7, z=3D  =\r
+5&gt;\r
+pos=3D&lt;x=3D  8, y=3D-12, z=3D -3&gt;, vel=3D&lt;x=3D -2, y=3D  1, z=3D -=\r
+7&gt;\r
+pos=3D&lt;x=3D-18, y=3D -8, z=3D -2&gt;, vel=3D&lt;x=3D  0, y=3D  6, z=3D -=\r
+1&gt;\r
+\r
+After 70 steps:\r
+pos=3D&lt;x=3D-33, y=3D -6, z=3D  5&gt;, vel=3D&lt;x=3D -5, y=3D -4, z=3D  =\r
+7&gt;\r
+pos=3D&lt;x=3D 13, y=3D -9, z=3D  2&gt;, vel=3D&lt;x=3D -2, y=3D 11, z=3D  =\r
+3&gt;\r
+pos=3D&lt;x=3D 11, y=3D -8, z=3D  2&gt;, vel=3D&lt;x=3D  8, y=3D -6, z=3D -=\r
+7&gt;\r
+pos=3D&lt;x=3D 17, y=3D  3, z=3D  1&gt;, vel=3D&lt;x=3D -1, y=3D -1, z=3D -=\r
+3&gt;\r
+\r
+After 80 steps:\r
+pos=3D&lt;x=3D 30, y=3D -8, z=3D  3&gt;, vel=3D&lt;x=3D  3, y=3D  3, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D -2, y=3D -4, z=3D  0&gt;, vel=3D&lt;x=3D  4, y=3D-13, z=3D  =\r
+2&gt;\r
+pos=3D&lt;x=3D-18, y=3D -7, z=3D 15&gt;, vel=3D&lt;x=3D -8, y=3D  2, z=3D -=\r
+2&gt;\r
+pos=3D&lt;x=3D -2, y=3D -1, z=3D -8&gt;, vel=3D&lt;x=3D  1, y=3D  8, z=3D  =\r
+0&gt;\r
+\r
+After 90 steps:\r
+pos=3D&lt;x=3D-25, y=3D -1, z=3D  4&gt;, vel=3D&lt;x=3D  1, y=3D -3, z=3D  =\r
+4&gt;\r
+pos=3D&lt;x=3D  2, y=3D -9, z=3D  0&gt;, vel=3D&lt;x=3D -3, y=3D 13, z=3D -=\r
+1&gt;\r
+pos=3D&lt;x=3D 32, y=3D -8, z=3D 14&gt;, vel=3D&lt;x=3D  5, y=3D -4, z=3D  =\r
+6&gt;\r
+pos=3D&lt;x=3D -1, y=3D -2, z=3D -8&gt;, vel=3D&lt;x=3D -3, y=3D -6, z=3D -=\r
+9&gt;\r
+\r
+After 100 steps:\r
+pos=3D&lt;x=3D  8, y=3D-12, z=3D -9&gt;, vel=3D&lt;x=3D -7, y=3D  3, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D 13, y=3D 16, z=3D -3&gt;, vel=3D&lt;x=3D  3, y=3D-11, z=3D -=\r
+5&gt;\r
+pos=3D&lt;x=3D-29, y=3D-11, z=3D -1&gt;, vel=3D&lt;x=3D -3, y=3D  7, z=3D  =\r
+4&gt;\r
+pos=3D&lt;x=3D 16, y=3D-13, z=3D 23&gt;, vel=3D&lt;x=3D  7, y=3D  1, z=3D  =\r
+1&gt;\r
+\r
+Energy after 100 steps:\r
+pot:  8 + 12 +  9 =3D 29;   kin: 7 +  3 + 0 =3D 10;   total: 29 * 10 =3D 29=\r
+0\r
+pot: 13 + 16 +  3 =3D 32;   kin: 3 + 11 + 5 =3D 19;   total: 32 * 19 =3D 60=\r
+8\r
+pot: 29 + 11 +  1 =3D 41;   kin: 3 +  7 + 4 =3D 14;   total: 41 * 14 =3D 57=\r
+4\r
+pot: 16 + 13 + 23 =3D 52;   kin: 7 +  1 + 1 =3D  9;   total: 52 *  9 =3D 46=\r
+8\r
+Sum of total energy: 290 + 608 + 574 + 468 =3D <em>1940</em>\r
+</code></pre>\r
+<p><em>What is the total energy in the system</em> after simulating the moo=\r
+ns given in your scan for <code>1000</code> steps?</p>\r
+</article>\r
+<p>Your puzzle answer was <code>6735</code>.</p><article class=3D"day-desc"=\r
+><h2 id=3D"part2">--- Part Two ---</h2><p>All this drifting around in space=\r
+ makes you wonder about the nature of the universe.  Does history really re=\r
+peat itself?  You're curious whether the moons will ever return to a previo=\r
+us state.</p>\r
+<p>Determine <em>the number of steps</em> that must occur before all of the=\r
+ moons' <em>positions and velocities</em> exactly match a previous point in=\r
+ time.</p>\r
+<p>For example, the first example above takes <code>2772</code> steps befor=\r
+e they exactly match a previous point in time; it eventually returns to the=\r
+ initial state:</p>\r
+<pre><code>After 0 steps:\r
+pos=3D&lt;x=3D -1, y=3D  0, z=3D  2&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  2, y=3D-10, z=3D -7&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  4, y=3D -8, z=3D  8&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  3, y=3D  5, z=3D -1&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+\r
+After 2770 steps:\r
+pos=3D&lt;x=3D  2, y=3D -1, z=3D  1&gt;, vel=3D&lt;x=3D -3, y=3D  2, z=3D  =\r
+2&gt;\r
+pos=3D&lt;x=3D  3, y=3D -7, z=3D -4&gt;, vel=3D&lt;x=3D  2, y=3D -5, z=3D -=\r
+6&gt;\r
+pos=3D&lt;x=3D  1, y=3D -7, z=3D  5&gt;, vel=3D&lt;x=3D  0, y=3D -3, z=3D  =\r
+6&gt;\r
+pos=3D&lt;x=3D  2, y=3D  2, z=3D  0&gt;, vel=3D&lt;x=3D  1, y=3D  6, z=3D -=\r
+2&gt;\r
+\r
+After 2771 steps:\r
+pos=3D&lt;x=3D -1, y=3D  0, z=3D  2&gt;, vel=3D&lt;x=3D -3, y=3D  1, z=3D  =\r
+1&gt;\r
+pos=3D&lt;x=3D  2, y=3D-10, z=3D -7&gt;, vel=3D&lt;x=3D -1, y=3D -3, z=3D -=\r
+3&gt;\r
+pos=3D&lt;x=3D  4, y=3D -8, z=3D  8&gt;, vel=3D&lt;x=3D  3, y=3D -1, z=3D  =\r
+3&gt;\r
+pos=3D&lt;x=3D  3, y=3D  5, z=3D -1&gt;, vel=3D&lt;x=3D  1, y=3D  3, z=3D -=\r
+1&gt;\r
+\r
+After 2772 steps:\r
+pos=3D&lt;x=3D -1, y=3D  0, z=3D  2&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  2, y=3D-10, z=3D -7&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  4, y=3D -8, z=3D  8&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+pos=3D&lt;x=3D  3, y=3D  5, z=3D -1&gt;, vel=3D&lt;x=3D  0, y=3D  0, z=3D  =\r
+0&gt;\r
+</code></pre>\r
+<p>Of course, the universe might last for a <em>very long time</em> before =\r
+repeating.  Here's a copy of the second example from above:</p>\r
+<pre><code>&lt;x=3D-8, y=3D-10, z=3D0&gt;\r
+&lt;x=3D5, y=3D5, z=3D10&gt;\r
+&lt;x=3D2, y=3D-7, z=3D3&gt;\r
+&lt;x=3D9, y=3D-8, z=3D-3&gt;\r
+</code></pre>\r
+<p>This set of initial positions takes <code>4686774924</code> steps before=\r
+ it repeats a previous state! Clearly, you might need to <em>find a more ef=\r
+ficient way to simulate the universe</em>.</p>\r
+<p><em>How many steps does it take</em> to reach the first state that exact=\r
+ly matches a previous state?</p>\r
+</article>\r
+<p>Your puzzle answer was <code>326489627728984</code>.</p><p class=3D"day-=\r
+success">Both parts of this puzzle are complete! They provide two gold star=\r
+s: **</p>\r
+<p>At this point, you should <a href=3D"https://adventofcode.com/2019" data=\r
+-ss1576248183=3D"1">return to your Advent calendar</a> and try another puzz=\r
+le.</p>\r
+<p>If you still want to see it, you can <a href=3D"https://adventofcode.com=\r
+/2019/day/12/input" target=3D"_blank" data-ss1576248183=3D"1">get your puzz=\r
+le input</a>.</p>\r
+<p>You can also <span class=3D"share">[Share<span class=3D"share-content">o=\r
+n\r
+  <a href=3D"https://twitter.com/intent/tweet?text=3DI%27ve+completed+%22Th=\r
+e+N%2DBody+Problem%22+%2D+Day+12+%2D+Advent+of+Code+2019&amp;url=3Dhttps%3A=\r
+%2F%2Fadventofcode%2Ecom%2F2019%2Fday%2F12&amp;related=3Dericwastl&amp;hash=\r
+tags=3DAdventOfCode" target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=\r
+=3D"1">Twitter</a>\r
+  <a target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=3D"1">Mastodon<=\r
+/a></span>]</span> this puzzle.</p>\r
+</main>\r
+\r
+<!-- ga -->\r
+\r
+<!-- /ga -->\r
+\r
+</body></html>\r
+------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----\r
+Content-Type: text/css\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://fonts.googleapis.com/css?family=Source+Code+Pro:300&subset=latin,latin-ext\r
+\r
+@charset "utf-8";\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDvucq_mk.woff2") format("woff2"); unicode-range: U+460-52F, U+1C80-1=\r
+C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDt-cq_mk.woff2") format("woff2"); unicode-range: U+400-45F, U+490-49=\r
+1, U+4B0-4B1, U+2116; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDsOcq_mk.woff2") format("woff2"); unicode-range: U+370-3FF; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDvOcq_mk.woff2") format("woff2"); unicode-range: U+102-103, U+110-11=\r
+1, U+1EA0-1EF9, U+20AB; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDvecq_mk.woff2") format("woff2"); unicode-range: U+100-24F, U+259, U=\r
++1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A=\r
+7FF; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDs-cq.woff2") format("woff2"); unicode-range: U+0-FF, U+131, U+152-1=\r
+53, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+2000-206F, U+2074, U+20AC, U+2122, U+=\r
+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }\r
+------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----\r
+Content-Type: font/woff2\r
+Content-Transfer-Encoding: base64\r
+Content-Location: https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM7PqtlsnDsOcq_mk.woff2\r
+\r
+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\r
+SKT0wM/f7DbY1bHt6/DTNq2/BgAAAA==\r
+\r
+------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----\r
+Content-Type: font/woff2\r
+Content-Transfer-Encoding: base64\r
+Content-Location: https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM7PqtlsnDs-cq.woff2\r
+\r
+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\r
+\r
+------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----\r
+Content-Type: text/css\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://adventofcode.com/static/style.css?24\r
+\r
+@charset "utf-8";\r
+\r
+body { background: rgb(15, 15, 35); color: rgb(204, 204, 204); font-family:=\r
+ "Source Code Pro", monospace; font-size: 14pt; min-width: 60em; }\r
+\r
+img { border: 0px; }\r
+\r
+a { outline: 0px; }\r
+\r
+main, figure, figcaption { display: block; }\r
+\r
+pre, code { font-family: "Source Code Pro", monospace; }\r
+\r
+header, main { text-size-adjust: none; }\r
+\r
+a { text-decoration: none; color: rgb(0, 153, 0); }\r
+\r
+a:hover, a:focus { color: rgb(153, 255, 153); }\r
+\r
+h1, h2 { font-size: 1em; font-weight: normal; }\r
+\r
+code { position: relative; display: inline-block; margin: 0px; padding: 0px=\r
+; }\r
+\r
+code::before { z-index: -1; content: ""; position: absolute; display: block=\r
+; left: -2px; right: -2px; top: 3px; bottom: 0px; border: 1px solid rgb(51,=\r
+ 51, 64); background: rgb(16, 16, 26); }\r
+\r
+pre.wrap { max-width: 100%; white-space: pre-wrap; }\r
+\r
+.quiet { opacity: 0.5; }\r
+\r
+p.wrap { width: 45em; }\r
+\r
+.hidden-layout { padding: 0px 0.5em; border: 1px solid transparent; }\r
+\r
+.hidden { border: 1px dotted gray; overflow: hidden; position: relative; pa=\r
+dding: 0px 0.5em; }\r
+\r
+.hidden::before { content: "(hover to view)"; position: absolute; opacity: =\r
+0.5; text-align: center; left: 0px; top: 0px; width: 100%; }\r
+\r
+.hidden > * { visibility: hidden; }\r
+\r
+.hidden:hover { border-color: transparent; }\r
+\r
+.hidden:hover::before { display: none; }\r
+\r
+.hidden:hover > * { visibility: visible; }\r
+\r
+.warning:not(.warning-active) { transition: color 1s ease 0s, opacity 1s ea=\r
+se 0s; }\r
+\r
+.warning-active { color: rgb(255, 0, 0); opacity: 1; }\r
+\r
+.supporter-badge { color: rgb(255, 255, 102); }\r
+\r
+a.supporter-badge:hover, a.supporter-badge:focus { text-decoration: none; c=\r
+olor: rgb(255, 255, 204); text-shadow: rgb(255, 255, 102) 0px 0px 5px; }\r
+\r
+.sponsor-badge { color: rgb(121, 162, 216); }\r
+\r
+a.sponsor-badge:hover, a.sponsor-badge:focus { text-decoration: none; color=\r
+: rgb(204, 219, 237); text-shadow: rgb(121, 162, 216) 0px 0px 5px; }\r
+\r
+#sidebar { width: 200px; float: right; margin: 0px 15px 2em 2em; }\r
+\r
+#sponsor { margin-bottom: 2.5em; }\r
+\r
+header { white-space: nowrap; cursor: default; z-index: 100; margin-bottom:=\r
+ 2em; }\r
+\r
+header h1 { display: inline-block; margin: 0px; padding-right: 1em; }\r
+\r
+header h1 a, header h1 span { display: inline-block; text-decoration: none;=\r
+ color: rgb(0, 204, 0); text-shadow: rgb(0, 204, 0) 0px 0px 2px, rgb(0, 204=\r
+, 0) 0px 0px 5px; }\r
+\r
+header h1 a:hover, header h1 a:focus { color: rgb(153, 255, 153); text-shad=\r
+ow: rgb(153, 255, 153) 0px 0px 2px, rgb(153, 255, 153) 0px 0px 5px; }\r
+\r
+header h1.title-event .title-event-wrap { opacity: 0.33; white-space: pre; =\r
+}\r
+\r
+header .user { display: inline-block; padding-left: 1em; }\r
+\r
+header .user .star-count { color: rgb(255, 255, 102); }\r
+\r
+header nav { display: inline-block; }\r
+\r
+header nav ul { list-style-type: none; padding: 0px; margin: 0px; display: =\r
+inline-block; }\r
+\r
+header nav li { display: inline-block; padding: 0px 0.6em; }\r
+\r
+header nav a { display: inline-block; text-decoration: none; outline: none;=\r
+ }\r
+\r
+input[type=3D"text"], textarea { color: inherit; border: 1px solid rgb(102,=\r
+ 102, 102); background: rgb(16, 16, 26); padding: 0px 2px; font-family: inh=\r
+erit; font-size: inherit; margin: 0px; }\r
+\r
+textarea { vertical-align: top; }\r
+\r
+label img { vertical-align: bottom; position: relative; top: -3px; margin-r=\r
+ight: 0.3em; }\r
+\r
+input[type=3D"radio"] { display: none; }\r
+\r
+input[type=3D"radio"] ~ span { cursor: pointer; display: inline-block; }\r
+\r
+input[type=3D"radio"] ~ span::before { content: "( ) "; }\r
+\r
+input[type=3D"radio"] ~ span:hover, input[type=3D"radio"] ~ span:focus { ba=\r
+ckground-color: rgb(25, 25, 59); }\r
+\r
+input[type=3D"radio"]:checked ~ span { color: rgb(255, 255, 255); }\r
+\r
+input[type=3D"radio"]:checked ~ span::before { content: "(O) "; }\r
+\r
+input[type=3D"checkbox"] { display: none; }\r
+\r
+input[type=3D"checkbox"] ~ span { cursor: pointer; display: inline-block; }\r
+\r
+input[type=3D"checkbox"] ~ span::before { content: "[ ] "; }\r
+\r
+input[type=3D"checkbox"] ~ span:hover, input[type=3D"checkbox"] ~ span:focu=\r
+s { background-color: rgb(25, 25, 59); }\r
+\r
+input[type=3D"checkbox"]:checked ~ span { color: rgb(255, 255, 255); }\r
+\r
+input[type=3D"checkbox"]:checked ~ span::before { content: "[X] "; }\r
+\r
+input[type=3D"checkbox"]:disabled ~ span { opacity: 0.3; cursor: default; }\r
+\r
+input[type=3D"checkbox"]:disabled ~ span::before { content: "[-] "; }\r
+\r
+input[type=3D"checkbox"]:disabled ~ span:hover { background-color: transpar=\r
+ent; }\r
+\r
+input[type=3D"submit"] { background: transparent; border: 0px; font-family:=\r
+ inherit; font-size: inherit; margin: 0px; padding: 0px; color: rgb(0, 153,=\r
+ 0); cursor: pointer; }\r
+\r
+input[type=3D"submit"]:hover, input[type=3D"submit"]:focus { color: rgb(153=\r
+, 255, 153); }\r
+\r
+article { width: 45em; margin-bottom: 2em; margin-top: 2em; }\r
+\r
+article:first-child { margin-top: 0px; }\r
+\r
+article h2 { color: rgb(255, 255, 255); margin-top: 1em; margin-bottom: 1em=\r
+; white-space: nowrap; }\r
+\r
+article h2 + * { margin-top: 0px; }\r
+\r
+article em { color: rgb(255, 255, 255); font-style: normal; text-shadow: rg=\r
+b(255, 255, 255) 0px 0px 5px; }\r
+\r
+article em.star { color: rgb(255, 255, 102); font-style: normal; text-shado=\r
+w: rgb(255, 255, 102) 0px 0px 5px; }\r
+\r
+article a { white-space: nowrap; }\r
+\r
+article .aside { opacity: 0.6; }\r
+\r
+article ul { list-style-type: none; padding: 0px; }\r
+\r
+article li { padding-left: 2.5em; position: relative; }\r
+\r
+article li::before { content: "=C2=A0=C2=A0-=C2=A0"; position: absolute; le=\r
+ft: 0px; top: 0px; }\r
+\r
+.day-success { color: rgb(255, 255, 102); text-shadow: rgb(255, 255, 102) 0=\r
+px 0px 5px; }\r
+\r
+form#settings input[type=3D"radio"] ~ span { min-width: 30em; }\r
+\r
+form#settings input[type=3D"checkbox"] ~ span { min-width: 30em; }\r
+\r
+.share { color: rgb(0, 153, 0); cursor: default; transition: color 0.2s eas=\r
+e 1s; }\r
+\r
+.share:hover, .share:focus-within { color: rgb(170, 255, 170); transition: =\r
+color 0.2s ease 0s; }\r
+\r
+.share .share-content { display: inline-block; vertical-align: text-bottom;=\r
+ white-space: nowrap; overflow: hidden; max-width: 0px; transition: max-wid=\r
+th 0.2s ease 1s; }\r
+\r
+.share .share-content::before { content: "=C2=A0"; }\r
+\r
+.share .share-content::after { }\r
+\r
+.share:hover .share-content, .share:focus-within .share-content { max-width=\r
+: 45em; transition: max-width 0.2s ease 0s; }\r
+\r
+.puzzle-input { border: 1px solid rgb(153, 153, 153); background: rgb(51, 5=\r
+1, 51); color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =\r
+5px; }\r
+\r
+.calendar { cursor: default; user-select: none; }\r
+\r
+.calendar > span { color: rgb(51, 51, 51); }\r
+\r
+.calendar > a { text-decoration: none; color: rgb(102, 102, 102); outline: =\r
+none; cursor: default; }\r
+\r
+.calendar a:hover, .calendar a:focus { background-color: rgba(119, 119, 165=\r
+, 0.2); cursor: pointer; }\r
+\r
+#calendar-countdown { padding-left: 0.5em; color: rgb(204, 204, 204); }\r
+\r
+.calendar .calendar-day { color: rgb(102, 102, 102); }\r
+\r
+.calendar a .calendar-day { color: rgb(204, 204, 204); }\r
+\r
+.calendar a .calendar-mark-complete, .calendar a .calendar-mark-verycomplet=\r
+e { visibility: hidden; }\r
+\r
+.calendar a.calendar-complete .calendar-mark-complete, .calendar a.calendar=\r
+-verycomplete .calendar-mark-complete { visibility: visible; color: rgb(255=\r
+, 255, 102); }\r
+\r
+.calendar a.calendar-verycomplete .calendar-mark-verycomplete { visibility:=\r
+ visible; color: rgb(255, 255, 102); }\r
+\r
+.calendar .calendar-day-new { animation: 5s ease 0s 1 normal none running a=\r
+nim-day-new; }\r
+\r
+.calendar .calendar-day-new .calendar-day { animation: 5s ease 0s 1 normal =\r
+none running anim-day-new-day; }\r
+\r
+@keyframes anim-day-new {=20\r
+  0% { color: rgb(51, 51, 51); text-shadow: transparent 0px 0px 5px; }\r
+  25% { color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =\r
+5px; }\r
+  100% { color: rgb(102, 102, 102); text-shadow: transparent 0px 0px 5px; }\r
+}\r
+\r
+@keyframes anim-day-new-day {=20\r
+  0% { color: rgb(102, 102, 102); text-shadow: transparent 0px 0px 5px; }\r
+  25% { color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =\r
+5px; }\r
+  100% { color: rgb(204, 204, 204); text-shadow: transparent 0px 0px 5px; }\r
+}\r
+\r
+.stats > span, .stats > span .stats-firstonly, .stats > span .stats-both { =\r
+color: rgb(102, 102, 102); }\r
+\r
+.stats > a { color: rgb(204, 204, 204); min-width: 35em; display: inline-bl=\r
+ock; }\r
+\r
+.stats > a:hover, .stats > a:focus { background-color: rgb(30, 30, 70); }\r
+\r
+.stats-firstonly { color: rgb(153, 153, 204); }\r
+\r
+.stats-both { color: rgb(255, 255, 102); }\r
+\r
+.leaderboard-daylinks { cursor: default; }\r
+\r
+.leaderboard-daylinks-selected { color: rgb(255, 255, 255); text-shadow: rg=\r
+b(255, 255, 255) 0px 0px 5px; }\r
+\r
+.leaderboard-daydesc-first { color: rgb(153, 153, 204); }\r
+\r
+.leaderboard-daydesc-both { color: rgb(255, 255, 102); }\r
+\r
+.leaderboard-entry { white-space: pre; }\r
+\r
+.leaderboard-entry .leaderboard-totalscore { color: rgb(255, 255, 255); }\r
+\r
+.leaderboard-anon { opacity: 0.6; }\r
+\r
+.leaderboard-userphoto { display: inline-block; height: 20px; width: 20px; =\r
+margin: 0px 0.5em; text-align: center; }\r
+\r
+.leaderboard-userphoto img { height: 20px; max-width: 20px; vertical-align:=\r
+ middle; position: relative; top: -2px; }\r
+\r
+.leaderboard-time { opacity: 0.5; }\r
+\r
+.privboard-row { white-space: pre; }\r
+\r
+.privboard-row .star-count { color: rgb(255, 255, 102); }\r
+\r
+.privboard-name { vertical-align: text-bottom; }\r
+\r
+.privboard-days > span { display: inline-block; color: rgb(51, 51, 51); }\r
+\r
+.privboard-days > a { display: inline-block; }\r
+\r
+.privboard-star-locked { visibility: hidden; }\r
+\r
+.privboard-star-unlocked { color: rgb(51, 51, 51); }\r
+\r
+.privboard-star-firstonly { color: rgb(153, 153, 204); }\r
+\r
+.privboard-star-both { color: rgb(255, 255, 102); }\r
+\r
+.privboard-delbtn { opacity: 0.33; }\r
+\r
+.privboard-row:hover .privboard-delbtn { opacity: 1; }\r
+\r
+.sponsors { width: 46em; }\r
+\r
+.sponsor { margin: 1em 0px; }\r
+------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----\r
+Content-Type: text/css\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://adventofcode.com/static/highcontrast.css?0\r
+\r
+@charset "utf-8";\r
+\r
+* { background: white !important; color: black !important; text-shadow: non=\r
+e !important; }\r
+\r
+a { color: rgb(0, 0, 255) !important; text-decoration: underline !important=\r
+; }\r
+\r
+em { font-weight: 900 !important; }\r
+------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra------\r
diff --git a/problems/day13.html b/problems/day13.html
new file mode 100644 (file)
index 0000000..2326415
--- /dev/null
@@ -0,0 +1,1002 @@
+From: <Saved by Blink>\r
+Snapshot-Content-Location: https://adventofcode.com/2019/day/13\r
+Subject: Day 13 - Advent of Code 2019\r
+Date: Sat, 14 Dec 2019 18:46:31 -0000\r
+MIME-Version: 1.0\r
+Content-Type: multipart/related;\r
+       type="text/html";\r
+       boundary="----MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt----"\r
+\r
+\r
+------MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt----\r
+Content-Type: text/html\r
+Content-ID: <frame-71FA9237AE9D77E0202E04AA63F1B972@mhtml.blink>\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://adventofcode.com/2019/day/13\r
+\r
+<!DOCTYPE html><html lang=3D"en-us"><head><meta http-equiv=3D"Content-Type"=\r
+ content=3D"text/html; charset=3DUTF-8">\r
+\r
+<title>Day 13 - Advent of Code 2019</title>\r
+<!--[if lt IE 9]><script src=3D"/static/html5.js"></script><![endif]-->\r
+<link href=3D"https://fonts.googleapis.com/css?family=3DSource+Code+Pro:300=\r
+&amp;subset=3Dlatin,latin-ext" rel=3D"stylesheet" type=3D"text/css">\r
+<link rel=3D"stylesheet" type=3D"text/css" href=3D"https://adventofcode.com=\r
+/static/style.css?24">\r
+<link rel=3D"stylesheet alternate" type=3D"text/css" href=3D"https://advent=\r
+ofcode.com/static/highcontrast.css?0" title=3D"High Contrast">\r
+<link rel=3D"shortcut icon" href=3D"https://adventofcode.com/favicon.png">\r
+</head><!--\r
+\r
+\r
+\r
+\r
+Oh, hello!  Funny seeing you here.\r
+\r
+I appreciate your enthusiasm, but you aren't going to find much down here.\r
+There certainly aren't clues to any of the puzzles.  The best surprises don=\r
+'t\r
+even appear in the source until you unlock them for real.\r
+\r
+Please be careful with automated requests; I'm not a massive company, and I=\r
+ can\r
+only take so much traffic.  Please be considerate so that everyone gets to =\r
+play.\r
+\r
+If you're curious about how Advent of Code works, it's running on some cust=\r
+om\r
+Perl code. Other than a few integrations (auth, analytics, ads, social medi=\r
+a),\r
+I built the whole thing myself, including the design, animations, prose, an=\r
+d\r
+all of the puzzles.\r
+\r
+The puzzles are most of the work; preparing a new calendar and a new set of\r
+puzzles each year takes all of my free time for 4-5 months. A lot of effort\r
+went into building this thing - I hope you're enjoying playing it as much a=\r
+s I\r
+enjoyed making it for you!\r
+\r
+If you'd like to hang out, I'm @ericwastl on Twitter.\r
+\r
+- Eric Wastl\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
+-->\r
+<body>\r
+<header><div><h1 class=3D"title-global"><a href=3D"https://adventofcode.com=\r
+/" data-ss1576349186=3D"1">Advent of Code</a></h1><nav><ul><li><a href=3D"h=\r
+ttps://adventofcode.com/2019/about" data-ss1576349186=3D"1">[About]</a></li=\r
+><li><a href=3D"https://adventofcode.com/2019/events" data-ss1576349186=3D"=\r
+1">[Events]</a></li><li><a href=3D"https://teespring.com/adventofcode-2019"=\r
+ target=3D"_blank" rel=3D"noreferrer" data-ss1576349186=3D"1">[Shop]</a></l=\r
+i><li><a href=3D"https://adventofcode.com/2019/settings" data-ss1576349186=\r
+=3D"1">[Settings]</a></li><li><a href=3D"https://adventofcode.com/2019/auth=\r
+/logout" data-ss1576349186=3D"1">[Log Out]</a></li></ul></nav><div class=3D=\r
+"user">Neil Smith <a href=3D"https://adventofcode.com/2019/support" class=\r
+=3D"supporter-badge" title=3D"Advent of Code Supporter" data-ss1576349186=\r
+=3D"1">(AoC++)</a> <span class=3D"star-count">26*</span></div></div><div><h=\r
+1 class=3D"title-event">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=3D"=\r
+title-event-wrap">/^</span><a href=3D"https://adventofcode.com/2019" data-s=\r
+s1576349186=3D"1">2019</a><span class=3D"title-event-wrap">$/</span></h1><n=\r
+av><ul><li><a href=3D"https://adventofcode.com/2019" data-ss1576349186=3D"1=\r
+">[Calendar]</a></li><li><a href=3D"https://adventofcode.com/2019/support" =\r
+data-ss1576349186=3D"1">[AoC++]</a></li><li><a href=3D"https://adventofcode=\r
+.com/2019/sponsors" data-ss1576349186=3D"1">[Sponsors]</a></li><li><a href=\r
+=3D"https://adventofcode.com/2019/leaderboard" data-ss1576349186=3D"1">[Lea=\r
+derboard]</a></li><li><a href=3D"https://adventofcode.com/2019/stats" data-=\r
+ss1576349186=3D"1">[Stats]</a></li></ul></nav></div></header>\r
+\r
+<div id=3D"sidebar">\r
+<div id=3D"sponsor"><div class=3D"quiet">Our <a href=3D"https://adventofcod=\r
+e.com/2019/sponsors" data-ss1576349186=3D"1">sponsors</a> help make Advent =\r
+of Code possible:</div><div class=3D"sponsor"><a href=3D"https://www.twilio=\r
+.com/quest" target=3D"_blank" rel=3D"noreferrer" data-ss1576349186=3D"1">Tw=\r
+ilioQuest</a> - Play Advent of Code and earn rad loot in TwilioQuest, a dev=\r
+eloper RPG for Mac, Windows, and Linux. Learn JavaScript, Python, git, APIs=\r
+ for SMS, VoIP, or WhatsApp, and much more.</div></div>\r
+</div><!--/sidebar-->\r
+\r
+<main>\r
+\r
+<article class=3D"day-desc"><h2>--- Day 13: Care Package ---</h2><p>As you =\r
+ponder the solitude of space and the ever-increasing three-hour roundtrip f=\r
+or messages between you and Earth, you notice that the Space Mail Indicator=\r
+ Light is blinking.  To help keep you sane, the Elves have sent you a care =\r
+package.</p>\r
+<p>It's a new game for the ship's <a href=3D"https://en.wikipedia.org/wiki/=\r
+Arcade_cabinet" rel=3D"noreferrer" data-ss1576349186=3D"1">arcade cabinet</=\r
+a>! Unfortunately, the arcade is <em>all the way</em> on the other end of t=\r
+he ship. Surely, it won't be hard to build your own - the care package even=\r
+ comes with schematics.</p>\r
+<p>The arcade cabinet runs <a href=3D"https://adventofcode.com/2019/day/9" =\r
+data-ss1576349186=3D"1">Intcode</a> software like the game the Elves sent (=\r
+your puzzle input). It has a primitive screen capable of drawing square <em=\r
+>tiles</em> on a grid.  The software draws tiles to the screen with output =\r
+instructions: every three output instructions specify the <code>x</code> po=\r
+sition (distance from the left), <code>y</code> position (distance from the=\r
+ top), and <code>tile id</code>. The <code>tile id</code> is interpreted as=\r
+ follows:</p>\r
+<ul>\r
+<li><code>0</code> is an <em>empty</em> tile.  No game object appears in th=\r
+is tile.</li>\r
+<li><code>1</code> is a <em>wall</em> tile.  Walls are indestructible barri=\r
+ers.</li>\r
+<li><code>2</code> is a <em>block</em> tile.  Blocks can be broken by the b=\r
+all.</li>\r
+<li><code>3</code> is a <em>horizontal paddle</em> tile.  The paddle is ind=\r
+estructible.</li>\r
+<li><code>4</code> is a <em>ball</em> tile.  The ball moves diagonally and =\r
+bounces off objects.</li>\r
+</ul>\r
+<p>For example, a sequence of output values like <code>1,2,3,6,5,4</code> w=\r
+ould draw a <em>horizontal paddle</em> tile (<code>1</code> tile from the l=\r
+eft and <code>2</code> tiles from the top) and a <em>ball</em> tile (<code>=\r
+6</code> tiles from the left and <code>5</code> tiles from the top).</p>\r
+<p>Start the game. <em>How many block tiles are on the screen when the game=\r
+ exits?</em></p>\r
+</article>\r
+<p>Your puzzle answer was <code>296</code>.</p><article class=3D"day-desc">=\r
+<h2 id=3D"part2">--- Part Two ---</h2><p>The game didn't run because you di=\r
+dn't put in any quarters. Unfortunately, you did not bring any <span title=\r
+=3D"You do have crew quarters, but they won't fit in the machine.">quarters=\r
+</span>. Memory address <code>0</code> represents the number of quarters th=\r
+at have been inserted; set it to <code>2</code> to play for free.</p>\r
+<p>The arcade cabinet has a <a href=3D"https://en.wikipedia.org/wiki/Joysti=\r
+ck" rel=3D"noreferrer" data-ss1576349186=3D"1">joystick</a> that can move l=\r
+eft and right.  The software reads the position of the joystick with input =\r
+instructions:</p>\r
+<ul>\r
+<li>If the joystick is in the <em>neutral position</em>, provide <code>0</c=\r
+ode>.</li>\r
+<li>If the joystick is <em>tilted to the left</em>, provide <code>-1</code>=\r
+.</li>\r
+<li>If the joystick is <em>tilted to the right</em>, provide <code>1</code>=\r
+.</li>\r
+</ul>\r
+<p>The arcade cabinet also has a <a href=3D"https://en.wikipedia.org/wiki/D=\r
+isplay_device#Segment_displays" rel=3D"noreferrer" data-ss1576349186=3D"1">=\r
+segment display</a> capable of showing a single number that represents the =\r
+player's current score. When three output instructions specify <code>X=3D-1=\r
+, Y=3D0</code>, the third output instruction is not a tile; the value inste=\r
+ad specifies the new score to show in the segment display.  For example, a =\r
+sequence of output values like <code>-1,0,12345</code> would show <code>123=\r
+45</code> as the player's current score.</p>\r
+<p>Beat the game by breaking all the blocks. <em>What is your score after t=\r
+he last block is broken?</em></p>\r
+</article>\r
+<p>Your puzzle answer was <code>13824</code>.</p><p class=3D"day-success">B=\r
+oth parts of this puzzle are complete! They provide two gold stars: **</p>\r
+<p>At this point, you should <a href=3D"https://adventofcode.com/2019" data=\r
+-ss1576349186=3D"1">return to your Advent calendar</a> and try another puzz=\r
+le.</p>\r
+<p>If you still want to see it, you can <a href=3D"https://adventofcode.com=\r
+/2019/day/13/input" target=3D"_blank" data-ss1576349186=3D"1">get your puzz=\r
+le input</a>.</p>\r
+<p>You can also <span class=3D"share">[Share<span class=3D"share-content">o=\r
+n\r
+  <a href=3D"https://twitter.com/intent/tweet?text=3DI%27ve+completed+%22Ca=\r
+re+Package%22+%2D+Day+13+%2D+Advent+of+Code+2019&amp;url=3Dhttps%3A%2F%2Fad=\r
+ventofcode%2Ecom%2F2019%2Fday%2F13&amp;related=3Dericwastl&amp;hashtags=3DA=\r
+dventOfCode" target=3D"_blank" rel=3D"noreferrer" data-ss1576349186=3D"1">T=\r
+witter</a>\r
+  <a target=3D"_blank" rel=3D"noreferrer" data-ss1576349186=3D"1">Mastodon<=\r
+/a></span>]</span> this puzzle.</p>\r
+</main>\r
+\r
+<!-- ga -->\r
+\r
+<!-- /ga -->\r
+\r
+</body></html>\r
+------MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt----\r
+Content-Type: text/css\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://fonts.googleapis.com/css?family=Source+Code+Pro:300&subset=latin,latin-ext\r
+\r
+@charset "utf-8";\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDvucq_mk.woff2") format("woff2"); unicode-range: U+460-52F, U+1C80-1=\r
+C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDt-cq_mk.woff2") format("woff2"); unicode-range: U+400-45F, U+490-49=\r
+1, U+4B0-4B1, U+2116; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDsOcq_mk.woff2") format("woff2"); unicode-range: U+370-3FF; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDvOcq_mk.woff2") format("woff2"); unicode-range: U+102-103, U+110-11=\r
+1, U+1EA0-1EF9, U+20AB; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDvecq_mk.woff2") format("woff2"); unicode-range: U+100-24F, U+259, U=\r
++1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A=\r
+7FF; }\r
+\r
+@font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=\r
+t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =\r
+url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=\r
+7PqtlsnDs-cq.woff2") format("woff2"); unicode-range: U+0-FF, U+131, U+152-1=\r
+53, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+2000-206F, U+2074, U+20AC, U+2122, U+=\r
+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }\r
+------MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt----\r
+Content-Type: font/woff2\r
+Content-Transfer-Encoding: base64\r
+Content-Location: https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM7PqtlsnDsOcq_mk.woff2\r
+\r
+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\r
+SKT0wM/f7DbY1bHt6/DTNq2/BgAAAA==\r
+\r
+------MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt----\r
+Content-Type: font/woff2\r
+Content-Transfer-Encoding: base64\r
+Content-Location: https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM7PqtlsnDs-cq.woff2\r
+\r
+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\r
+\r
+------MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt----\r
+Content-Type: text/css\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://adventofcode.com/static/style.css?24\r
+\r
+@charset "utf-8";\r
+\r
+body { background: rgb(15, 15, 35); color: rgb(204, 204, 204); font-family:=\r
+ "Source Code Pro", monospace; font-size: 14pt; min-width: 60em; }\r
+\r
+img { border: 0px; }\r
+\r
+a { outline: 0px; }\r
+\r
+main, figure, figcaption { display: block; }\r
+\r
+pre, code { font-family: "Source Code Pro", monospace; }\r
+\r
+header, main { text-size-adjust: none; }\r
+\r
+a { text-decoration: none; color: rgb(0, 153, 0); }\r
+\r
+a:hover, a:focus { color: rgb(153, 255, 153); }\r
+\r
+h1, h2 { font-size: 1em; font-weight: normal; }\r
+\r
+code { position: relative; display: inline-block; margin: 0px; padding: 0px=\r
+; }\r
+\r
+code::before { z-index: -1; content: ""; position: absolute; display: block=\r
+; left: -2px; right: -2px; top: 3px; bottom: 0px; border: 1px solid rgb(51,=\r
+ 51, 64); background: rgb(16, 16, 26); }\r
+\r
+pre.wrap { max-width: 100%; white-space: pre-wrap; }\r
+\r
+.quiet { opacity: 0.5; }\r
+\r
+p.wrap { width: 45em; }\r
+\r
+.hidden-layout { padding: 0px 0.5em; border: 1px solid transparent; }\r
+\r
+.hidden { border: 1px dotted gray; overflow: hidden; position: relative; pa=\r
+dding: 0px 0.5em; }\r
+\r
+.hidden::before { content: "(hover to view)"; position: absolute; opacity: =\r
+0.5; text-align: center; left: 0px; top: 0px; width: 100%; }\r
+\r
+.hidden > * { visibility: hidden; }\r
+\r
+.hidden:hover { border-color: transparent; }\r
+\r
+.hidden:hover::before { display: none; }\r
+\r
+.hidden:hover > * { visibility: visible; }\r
+\r
+.warning:not(.warning-active) { transition: color 1s ease 0s, opacity 1s ea=\r
+se 0s; }\r
+\r
+.warning-active { color: rgb(255, 0, 0); opacity: 1; }\r
+\r
+.supporter-badge { color: rgb(255, 255, 102); }\r
+\r
+a.supporter-badge:hover, a.supporter-badge:focus { text-decoration: none; c=\r
+olor: rgb(255, 255, 204); text-shadow: rgb(255, 255, 102) 0px 0px 5px; }\r
+\r
+.sponsor-badge { color: rgb(121, 162, 216); }\r
+\r
+a.sponsor-badge:hover, a.sponsor-badge:focus { text-decoration: none; color=\r
+: rgb(204, 219, 237); text-shadow: rgb(121, 162, 216) 0px 0px 5px; }\r
+\r
+#sidebar { width: 200px; float: right; margin: 0px 15px 2em 2em; }\r
+\r
+#sponsor { margin-bottom: 2.5em; }\r
+\r
+header { white-space: nowrap; cursor: default; z-index: 100; margin-bottom:=\r
+ 2em; }\r
+\r
+header h1 { display: inline-block; margin: 0px; padding-right: 1em; }\r
+\r
+header h1 a, header h1 span { display: inline-block; text-decoration: none;=\r
+ color: rgb(0, 204, 0); text-shadow: rgb(0, 204, 0) 0px 0px 2px, rgb(0, 204=\r
+, 0) 0px 0px 5px; }\r
+\r
+header h1 a:hover, header h1 a:focus { color: rgb(153, 255, 153); text-shad=\r
+ow: rgb(153, 255, 153) 0px 0px 2px, rgb(153, 255, 153) 0px 0px 5px; }\r
+\r
+header h1.title-event .title-event-wrap { opacity: 0.33; white-space: pre; =\r
+}\r
+\r
+header .user { display: inline-block; padding-left: 1em; }\r
+\r
+header .user .star-count { color: rgb(255, 255, 102); }\r
+\r
+header nav { display: inline-block; }\r
+\r
+header nav ul { list-style-type: none; padding: 0px; margin: 0px; display: =\r
+inline-block; }\r
+\r
+header nav li { display: inline-block; padding: 0px 0.6em; }\r
+\r
+header nav a { display: inline-block; text-decoration: none; outline: none;=\r
+ }\r
+\r
+input[type=3D"text"], textarea { color: inherit; border: 1px solid rgb(102,=\r
+ 102, 102); background: rgb(16, 16, 26); padding: 0px 2px; font-family: inh=\r
+erit; font-size: inherit; margin: 0px; }\r
+\r
+textarea { vertical-align: top; }\r
+\r
+label img { vertical-align: bottom; position: relative; top: -3px; margin-r=\r
+ight: 0.3em; }\r
+\r
+input[type=3D"radio"] { display: none; }\r
+\r
+input[type=3D"radio"] ~ span { cursor: pointer; display: inline-block; }\r
+\r
+input[type=3D"radio"] ~ span::before { content: "( ) "; }\r
+\r
+input[type=3D"radio"] ~ span:hover, input[type=3D"radio"] ~ span:focus { ba=\r
+ckground-color: rgb(25, 25, 59); }\r
+\r
+input[type=3D"radio"]:checked ~ span { color: rgb(255, 255, 255); }\r
+\r
+input[type=3D"radio"]:checked ~ span::before { content: "(O) "; }\r
+\r
+input[type=3D"checkbox"] { display: none; }\r
+\r
+input[type=3D"checkbox"] ~ span { cursor: pointer; display: inline-block; }\r
+\r
+input[type=3D"checkbox"] ~ span::before { content: "[ ] "; }\r
+\r
+input[type=3D"checkbox"] ~ span:hover, input[type=3D"checkbox"] ~ span:focu=\r
+s { background-color: rgb(25, 25, 59); }\r
+\r
+input[type=3D"checkbox"]:checked ~ span { color: rgb(255, 255, 255); }\r
+\r
+input[type=3D"checkbox"]:checked ~ span::before { content: "[X] "; }\r
+\r
+input[type=3D"checkbox"]:disabled ~ span { opacity: 0.3; cursor: default; }\r
+\r
+input[type=3D"checkbox"]:disabled ~ span::before { content: "[-] "; }\r
+\r
+input[type=3D"checkbox"]:disabled ~ span:hover { background-color: transpar=\r
+ent; }\r
+\r
+input[type=3D"submit"] { background: transparent; border: 0px; font-family:=\r
+ inherit; font-size: inherit; margin: 0px; padding: 0px; color: rgb(0, 153,=\r
+ 0); cursor: pointer; }\r
+\r
+input[type=3D"submit"]:hover, input[type=3D"submit"]:focus { color: rgb(153=\r
+, 255, 153); }\r
+\r
+article { width: 45em; margin-bottom: 2em; margin-top: 2em; }\r
+\r
+article:first-child { margin-top: 0px; }\r
+\r
+article h2 { color: rgb(255, 255, 255); margin-top: 1em; margin-bottom: 1em=\r
+; white-space: nowrap; }\r
+\r
+article h2 + * { margin-top: 0px; }\r
+\r
+article em { color: rgb(255, 255, 255); font-style: normal; text-shadow: rg=\r
+b(255, 255, 255) 0px 0px 5px; }\r
+\r
+article em.star { color: rgb(255, 255, 102); font-style: normal; text-shado=\r
+w: rgb(255, 255, 102) 0px 0px 5px; }\r
+\r
+article a { white-space: nowrap; }\r
+\r
+article .aside { opacity: 0.6; }\r
+\r
+article ul { list-style-type: none; padding: 0px; }\r
+\r
+article li { padding-left: 2.5em; position: relative; }\r
+\r
+article li::before { content: "=C2=A0=C2=A0-=C2=A0"; position: absolute; le=\r
+ft: 0px; top: 0px; }\r
+\r
+.day-success { color: rgb(255, 255, 102); text-shadow: rgb(255, 255, 102) 0=\r
+px 0px 5px; }\r
+\r
+form#settings input[type=3D"radio"] ~ span { min-width: 30em; }\r
+\r
+form#settings input[type=3D"checkbox"] ~ span { min-width: 30em; }\r
+\r
+.share { color: rgb(0, 153, 0); cursor: default; transition: color 0.2s eas=\r
+e 1s; }\r
+\r
+.share:hover, .share:focus-within { color: rgb(170, 255, 170); transition: =\r
+color 0.2s ease 0s; }\r
+\r
+.share .share-content { display: inline-block; vertical-align: text-bottom;=\r
+ white-space: nowrap; overflow: hidden; max-width: 0px; transition: max-wid=\r
+th 0.2s ease 1s; }\r
+\r
+.share .share-content::before { content: "=C2=A0"; }\r
+\r
+.share .share-content::after { }\r
+\r
+.share:hover .share-content, .share:focus-within .share-content { max-width=\r
+: 45em; transition: max-width 0.2s ease 0s; }\r
+\r
+.puzzle-input { border: 1px solid rgb(153, 153, 153); background: rgb(51, 5=\r
+1, 51); color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =\r
+5px; }\r
+\r
+.calendar { cursor: default; user-select: none; }\r
+\r
+.calendar > span { color: rgb(51, 51, 51); }\r
+\r
+.calendar > a { text-decoration: none; color: rgb(102, 102, 102); outline: =\r
+none; cursor: default; }\r
+\r
+.calendar a:hover, .calendar a:focus { background-color: rgba(119, 119, 165=\r
+, 0.2); cursor: pointer; }\r
+\r
+#calendar-countdown { padding-left: 0.5em; color: rgb(204, 204, 204); }\r
+\r
+.calendar .calendar-day { color: rgb(102, 102, 102); }\r
+\r
+.calendar a .calendar-day { color: rgb(204, 204, 204); }\r
+\r
+.calendar a .calendar-mark-complete, .calendar a .calendar-mark-verycomplet=\r
+e { visibility: hidden; }\r
+\r
+.calendar a.calendar-complete .calendar-mark-complete, .calendar a.calendar=\r
+-verycomplete .calendar-mark-complete { visibility: visible; color: rgb(255=\r
+, 255, 102); }\r
+\r
+.calendar a.calendar-verycomplete .calendar-mark-verycomplete { visibility:=\r
+ visible; color: rgb(255, 255, 102); }\r
+\r
+.calendar .calendar-day-new { animation: 5s ease 0s 1 normal none running a=\r
+nim-day-new; }\r
+\r
+.calendar .calendar-day-new .calendar-day { animation: 5s ease 0s 1 normal =\r
+none running anim-day-new-day; }\r
+\r
+@keyframes anim-day-new {=20\r
+  0% { color: rgb(51, 51, 51); text-shadow: transparent 0px 0px 5px; }\r
+  25% { color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =\r
+5px; }\r
+  100% { color: rgb(102, 102, 102); text-shadow: transparent 0px 0px 5px; }\r
+}\r
+\r
+@keyframes anim-day-new-day {=20\r
+  0% { color: rgb(102, 102, 102); text-shadow: transparent 0px 0px 5px; }\r
+  25% { color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =\r
+5px; }\r
+  100% { color: rgb(204, 204, 204); text-shadow: transparent 0px 0px 5px; }\r
+}\r
+\r
+.stats > span, .stats > span .stats-firstonly, .stats > span .stats-both { =\r
+color: rgb(102, 102, 102); }\r
+\r
+.stats > a { color: rgb(204, 204, 204); min-width: 35em; display: inline-bl=\r
+ock; }\r
+\r
+.stats > a:hover, .stats > a:focus { background-color: rgb(30, 30, 70); }\r
+\r
+.stats-firstonly { color: rgb(153, 153, 204); }\r
+\r
+.stats-both { color: rgb(255, 255, 102); }\r
+\r
+.leaderboard-daylinks { cursor: default; }\r
+\r
+.leaderboard-daylinks-selected { color: rgb(255, 255, 255); text-shadow: rg=\r
+b(255, 255, 255) 0px 0px 5px; }\r
+\r
+.leaderboard-daydesc-first { color: rgb(153, 153, 204); }\r
+\r
+.leaderboard-daydesc-both { color: rgb(255, 255, 102); }\r
+\r
+.leaderboard-entry { white-space: pre; }\r
+\r
+.leaderboard-entry .leaderboard-totalscore { color: rgb(255, 255, 255); }\r
+\r
+.leaderboard-anon { opacity: 0.6; }\r
+\r
+.leaderboard-userphoto { display: inline-block; height: 20px; width: 20px; =\r
+margin: 0px 0.5em; text-align: center; }\r
+\r
+.leaderboard-userphoto img { height: 20px; max-width: 20px; vertical-align:=\r
+ middle; position: relative; top: -2px; }\r
+\r
+.leaderboard-time { opacity: 0.5; }\r
+\r
+.privboard-row { white-space: pre; }\r
+\r
+.privboard-row .star-count { color: rgb(255, 255, 102); }\r
+\r
+.privboard-name { vertical-align: text-bottom; }\r
+\r
+.privboard-days > span { display: inline-block; color: rgb(51, 51, 51); }\r
+\r
+.privboard-days > a { display: inline-block; }\r
+\r
+.privboard-star-locked { visibility: hidden; }\r
+\r
+.privboard-star-unlocked { color: rgb(51, 51, 51); }\r
+\r
+.privboard-star-firstonly { color: rgb(153, 153, 204); }\r
+\r
+.privboard-star-both { color: rgb(255, 255, 102); }\r
+\r
+.privboard-delbtn { opacity: 0.33; }\r
+\r
+.privboard-row:hover .privboard-delbtn { opacity: 1; }\r
+\r
+.sponsors { width: 46em; }\r
+\r
+.sponsor { margin: 1em 0px; }\r
+------MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt----\r
+Content-Type: text/css\r
+Content-Transfer-Encoding: quoted-printable\r
+Content-Location: https://adventofcode.com/static/highcontrast.css?0\r
+\r
+@charset "utf-8";\r
+\r
+* { background: white !important; color: black !important; text-shadow: non=\r
+e !important; }\r
+\r
+a { color: rgb(0, 0, 255) !important; text-decoration: underline !important=\r
+; }\r
+\r
+em { font-weight: 900 !important; }\r
+------MultipartBoundary--qrosvSY0cZchejxtAGlvJsm9eQaunclwAN4tottIKt------\r
index aa87edf305464b01ae9f1413566ca5ef23947a00..c95f32e640b92d1307c5b03270424e221b46ed19 100644 (file)
@@ -50,6 +50,7 @@ packages:
 - advent10
 - advent11
 - advent12
 - advent10
 - advent11
 - advent12
+- advent13
 
 
 # Dependency packages to be pulled from upstream that are not in the resolver.
 
 
 # Dependency packages to be pulled from upstream that are not in the resolver.