Finally done day 24
[advent-of-code-19.git] / problems / day12.html
1 From: <Saved by Blink>
2 Snapshot-Content-Location: https://adventofcode.com/2019/day/12
3 Subject: Day 12 - Advent of Code 2019
4 Date: Fri, 13 Dec 2019 14:44:47 -0000
5 MIME-Version: 1.0
6 Content-Type: multipart/related;
7 type="text/html";
8 boundary="----MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----"
9
10
11 ------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----
12 Content-Type: text/html
13 Content-ID: <frame-62F5C8547A9C17350C9F559EEE8495CA@mhtml.blink>
14 Content-Transfer-Encoding: quoted-printable
15 Content-Location: https://adventofcode.com/2019/day/12
16
17 <!DOCTYPE html><html lang=3D"en-us"><head><meta http-equiv=3D"Content-Type"=
18 content=3D"text/html; charset=3DUTF-8">
19
20 <title>Day 12 - Advent of Code 2019</title>
21 <!--[if lt IE 9]><script src=3D"/static/html5.js"></script><![endif]-->
22 <link href=3D"https://fonts.googleapis.com/css?family=3DSource+Code+Pro:300=
23 &amp;subset=3Dlatin,latin-ext" rel=3D"stylesheet" type=3D"text/css">
24 <link rel=3D"stylesheet" type=3D"text/css" href=3D"https://adventofcode.com=
25 /static/style.css?24">
26 <link rel=3D"stylesheet alternate" type=3D"text/css" href=3D"https://advent=
27 ofcode.com/static/highcontrast.css?0" title=3D"High Contrast">
28 <link rel=3D"shortcut icon" href=3D"https://adventofcode.com/favicon.png">
29 </head><!--
30
31
32
33
34 Oh, hello! Funny seeing you here.
35
36 I appreciate your enthusiasm, but you aren't going to find much down here.
37 There certainly aren't clues to any of the puzzles. The best surprises don=
38 't
39 even appear in the source until you unlock them for real.
40
41 Please be careful with automated requests; I'm not a massive company, and I=
42 can
43 only take so much traffic. Please be considerate so that everyone gets to =
44 play.
45
46 If you're curious about how Advent of Code works, it's running on some cust=
47 om
48 Perl code. Other than a few integrations (auth, analytics, ads, social medi=
49 a),
50 I built the whole thing myself, including the design, animations, prose, an=
51 d
52 all of the puzzles.
53
54 The puzzles are most of the work; preparing a new calendar and a new set of
55 puzzles each year takes all of my free time for 4-5 months. A lot of effort
56 went into building this thing - I hope you're enjoying playing it as much a=
57 s I
58 enjoyed making it for you!
59
60 If you'd like to hang out, I'm @ericwastl on Twitter.
61
62 - Eric Wastl
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 -->
114 <body>
115 <header><div><h1 class=3D"title-global"><a href=3D"https://adventofcode.com=
116 /" data-ss1576248183=3D"1">Advent of Code</a></h1><nav><ul><li><a href=3D"h=
117 ttps://adventofcode.com/2019/about" data-ss1576248183=3D"1">[About]</a></li=
118 ><li><a href=3D"https://adventofcode.com/2019/events" data-ss1576248183=3D"=
119 1">[Events]</a></li><li><a href=3D"https://teespring.com/adventofcode-2019"=
120 target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=3D"1">[Shop]</a></l=
121 i><li><a href=3D"https://adventofcode.com/2019/settings" data-ss1576248183=
122 =3D"1">[Settings]</a></li><li><a href=3D"https://adventofcode.com/2019/auth=
123 /logout" data-ss1576248183=3D"1">[Log Out]</a></li></ul></nav><div class=3D=
124 "user">Neil Smith <a href=3D"https://adventofcode.com/2019/support" class=
125 =3D"supporter-badge" title=3D"Advent of Code Supporter" data-ss1576248183=
126 =3D"1">(AoC++)</a> <span class=3D"star-count">24*</span></div></div><div><h=
127 1 class=3D"title-event">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span cla=
128 ss=3D"title-event-wrap">=CE=BBy.</span><a href=3D"https://adventofcode.com/=
129 2019" data-ss1576248183=3D"1">2019</a><span class=3D"title-event-wrap"></sp=
130 an></h1><nav><ul><li><a href=3D"https://adventofcode.com/2019" data-ss15762=
131 48183=3D"1">[Calendar]</a></li><li><a href=3D"https://adventofcode.com/2019=
132 /support" data-ss1576248183=3D"1">[AoC++]</a></li><li><a href=3D"https://ad=
133 ventofcode.com/2019/sponsors" data-ss1576248183=3D"1">[Sponsors]</a></li><l=
134 i><a href=3D"https://adventofcode.com/2019/leaderboard" data-ss1576248183=
135 =3D"1">[Leaderboard]</a></li><li><a href=3D"https://adventofcode.com/2019/s=
136 tats" data-ss1576248183=3D"1">[Stats]</a></li></ul></nav></div></header>
137
138 <div id=3D"sidebar">
139 <div id=3D"sponsor"><div class=3D"quiet">Our <a href=3D"https://adventofcod=
140 e.com/2019/sponsors" data-ss1576248183=3D"1">sponsors</a> help make Advent =
141 of Code possible:</div><div class=3D"sponsor"><a href=3D"https://about.sour=
142 cegraph.com/" target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=3D"1">=
143 Sourcegraph</a> - Build the new standard developer platform on a globally-d=
144 istributed remote-first team. We value ownership, autonomy, communication, =
145 and transparency.</div></div>
146 </div><!--/sidebar-->
147
148 <main>
149
150 <article class=3D"day-desc"><h2>--- Day 12: The N-Body Problem ---</h2><p>T=
151 he space near Jupiter is not a very safe place; you need to be careful of a=
152 <a href=3D"https://en.wikipedia.org/wiki/Great_Red_Spot" rel=3D"noreferrer=
153 " data-ss1576248183=3D"1">big distracting red spot</a>, extreme <a href=3D"=
154 https://en.wikipedia.org/wiki/Magnetosphere_of_Jupiter" rel=3D"noreferrer" =
155 data-ss1576248183=3D"1">radiation</a>, and a <a href=3D"https://en.wikipedi=
156 a.org/wiki/Moons_of_Jupiter#List" rel=3D"noreferrer" data-ss1576248183=3D"1=
157 ">whole lot of moons</a> swirling around. You decide to start by tracking =
158 the four largest moons: <em>Io</em>, <em>Europa</em>, <em>Ganymede</em>, an=
159 d <em>Callisto</em>.</p>
160 <p>After a brief scan, you calculate the <em>position of each moon</em> (yo=
161 ur puzzle input). You just need to <em>simulate their motion</em> so you ca=
162 n <span title=3D"Or you could just leave, but where's the fun in that?">avo=
163 id them</span>.</p>
164 <p>Each moon has a 3-dimensional position (<code>x</code>, <code>y</code>, =
165 and <code>z</code>) and a 3-dimensional velocity. The position of each moo=
166 n is given in your scan; the <code>x</code>, <code>y</code>, and <code>z</c=
167 ode> velocity of each moon starts at <code>0</code>.</p>
168 <p>Simulate the motion of the moons in <em>time steps</em>. Within each tim=
169 e step, first update the velocity of every moon by applying <em>gravity</em=
170 >. Then, once all moons' velocities have been updated, update the position =
171 of every moon by applying <em>velocity</em>. Time progresses by one step on=
172 ce all of the positions are updated.</p>
173 <p>To apply <em>gravity</em>, consider every <em>pair</em> of moons. On eac=
174 h axis (<code>x</code>, <code>y</code>, and <code>z</code>), the velocity o=
175 f each moon changes by <em>exactly +1 or -1</em> to pull the moons together=
176 . For example, if Ganymede has an <code>x</code> position of <code>3</code=
177 >, and Callisto has a <code>x</code> position of <code>5</code>, then Ganym=
178 ede's <code>x</code> velocity <em>changes by +1</em> (because <code>5 &gt; =
179 3</code>) and Callisto's <code>x</code> velocity <em>changes by -1</em> (be=
180 cause <code>3 &lt; 5</code>). However, if the positions on a given axis are=
181 the same, the velocity on that axis <em>does not change</em> for that pair=
182 of moons.</p>
183 <p>Once all gravity has been applied, apply <em>velocity</em>: simply add t=
184 he velocity of each moon to its own position. For example, if Europa has a =
185 position of <code>x=3D1, y=3D2, z=3D3</code> and a velocity of <code>x=3D-2=
186 , y=3D0,z=3D3</code>, then its new position would be <code>x=3D-1, y=3D2, z=
187 =3D6</code>. This process does not modify the velocity of any moon.</p>
188 <p>For example, suppose your scan reveals the following positions:</p>
189 <pre><code>&lt;x=3D-1, y=3D0, z=3D2&gt;
190 &lt;x=3D2, y=3D-10, z=3D-7&gt;
191 &lt;x=3D4, y=3D-8, z=3D8&gt;
192 &lt;x=3D3, y=3D5, z=3D-1&gt;
193 </code></pre>
194 <p>Simulating the motion of these moons would produce the following:</p>
195 <pre><code>After 0 steps:
196 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;
197 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;
198 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;
199 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;
200
201 After 1 step:
202 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;
203 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;
204 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;
205 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;
206
207 After 2 steps:
208 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;
209 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;
210 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;
211 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;
212
213 After 3 steps:
214 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;
215 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;
216 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;
217 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;
218
219 After 4 steps:
220 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;
221 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;
222 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;
223 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;
224
225 After 5 steps:
226 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;
227 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;
228 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;
229 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;
230
231 After 6 steps:
232 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;
233 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;
234 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;
235 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;
236
237 After 7 steps:
238 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;
239 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;
240 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;
241 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;
242
243 After 8 steps:
244 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;
245 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;
246 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;
247 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;
248
249 After 9 steps:
250 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;
251 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;
252 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;
253 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;
254
255 After 10 steps:
256 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;
257 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;
258 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;
259 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;
260 </code></pre>
261 <p>Then, it might help to calculate the <em>total energy in the system</em>=
262 . The total energy for a single moon is its <em>potential energy</em> multi=
263 plied by its <em>kinetic energy</em>. A moon's <em>potential energy</em> is=
264 the sum of the <a href=3D"https://en.wikipedia.org/wiki/Absolute_value" re=
265 l=3D"noreferrer" data-ss1576248183=3D"1">absolute values</a> of its <code>x=
266 </code>, <code>y</code>, and <code>z</code> position coordinates. A moon's =
267 <em>kinetic energy</em> is the sum of the absolute values of its velocity c=
268 oordinates. Below, each line shows the calculations for a moon's potential=
269 energy (<code>pot</code>), kinetic energy (<code>kin</code>), and total en=
270 ergy:</p>
271 <pre><code>Energy after 10 steps:
272 pot: 2 + 1 + 3 =3D 6; kin: 3 + 2 + 1 =3D 6; total: 6 * 6 =3D 36
273 pot: 1 + 8 + 0 =3D 9; kin: 1 + 1 + 3 =3D 5; total: 9 * 5 =3D 45
274 pot: 3 + 6 + 1 =3D 10; kin: 3 + 2 + 3 =3D 8; total: 10 * 8 =3D 80
275 pot: 2 + 0 + 4 =3D 6; kin: 1 + 1 + 1 =3D 3; total: 6 * 3 =3D 18
276 Sum of total energy: 36 + 45 + 80 + 18 =3D <em>179</em>
277 </code></pre>
278 <p>In the above example, adding together the total energy for all moons aft=
279 er 10 steps produces the total energy in the system, <code><em>179</em></co=
280 de>.</p>
281 <p>Here's a second example:</p>
282 <pre><code>&lt;x=3D-8, y=3D-10, z=3D0&gt;
283 &lt;x=3D5, y=3D5, z=3D10&gt;
284 &lt;x=3D2, y=3D-7, z=3D3&gt;
285 &lt;x=3D9, y=3D-8, z=3D-3&gt;
286 </code></pre>
287 <p>Every ten steps of simulation for 100 steps produces:</p>
288 <pre><code>After 0 steps:
289 pos=3D&lt;x=3D -8, y=3D-10, z=3D 0&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
290 0&gt;
291 pos=3D&lt;x=3D 5, y=3D 5, z=3D 10&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
292 0&gt;
293 pos=3D&lt;x=3D 2, y=3D -7, z=3D 3&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
294 0&gt;
295 pos=3D&lt;x=3D 9, y=3D -8, z=3D -3&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
296 0&gt;
297
298 After 10 steps:
299 pos=3D&lt;x=3D -9, y=3D-10, z=3D 1&gt;, vel=3D&lt;x=3D -2, y=3D -2, z=3D -=
300 1&gt;
301 pos=3D&lt;x=3D 4, y=3D 10, z=3D 9&gt;, vel=3D&lt;x=3D -3, y=3D 7, z=3D -=
302 2&gt;
303 pos=3D&lt;x=3D 8, y=3D-10, z=3D -3&gt;, vel=3D&lt;x=3D 5, y=3D -1, z=3D -=
304 2&gt;
305 pos=3D&lt;x=3D 5, y=3D-10, z=3D 3&gt;, vel=3D&lt;x=3D 0, y=3D -4, z=3D =
306 5&gt;
307
308 After 20 steps:
309 pos=3D&lt;x=3D-10, y=3D 3, z=3D -4&gt;, vel=3D&lt;x=3D -5, y=3D 2, z=3D =
310 0&gt;
311 pos=3D&lt;x=3D 5, y=3D-25, z=3D 6&gt;, vel=3D&lt;x=3D 1, y=3D 1, z=3D -=
312 4&gt;
313 pos=3D&lt;x=3D 13, y=3D 1, z=3D 1&gt;, vel=3D&lt;x=3D 5, y=3D -2, z=3D =
314 2&gt;
315 pos=3D&lt;x=3D 0, y=3D 1, z=3D 7&gt;, vel=3D&lt;x=3D -1, y=3D -1, z=3D =
316 2&gt;
317
318 After 30 steps:
319 pos=3D&lt;x=3D 15, y=3D -6, z=3D -9&gt;, vel=3D&lt;x=3D -5, y=3D 4, z=3D =
320 0&gt;
321 pos=3D&lt;x=3D -4, y=3D-11, z=3D 3&gt;, vel=3D&lt;x=3D -3, y=3D-10, z=3D =
322 0&gt;
323 pos=3D&lt;x=3D 0, y=3D -1, z=3D 11&gt;, vel=3D&lt;x=3D 7, y=3D 4, z=3D =
324 3&gt;
325 pos=3D&lt;x=3D -3, y=3D -2, z=3D 5&gt;, vel=3D&lt;x=3D 1, y=3D 2, z=3D -=
326 3&gt;
327
328 After 40 steps:
329 pos=3D&lt;x=3D 14, y=3D-12, z=3D -4&gt;, vel=3D&lt;x=3D 11, y=3D 3, z=3D =
330 0&gt;
331 pos=3D&lt;x=3D -1, y=3D 18, z=3D 8&gt;, vel=3D&lt;x=3D -5, y=3D 2, z=3D =
332 3&gt;
333 pos=3D&lt;x=3D -5, y=3D-14, z=3D 8&gt;, vel=3D&lt;x=3D 1, y=3D -2, z=3D =
334 0&gt;
335 pos=3D&lt;x=3D 0, y=3D-12, z=3D -2&gt;, vel=3D&lt;x=3D -7, y=3D -3, z=3D -=
336 3&gt;
337
338 After 50 steps:
339 pos=3D&lt;x=3D-23, y=3D 4, z=3D 1&gt;, vel=3D&lt;x=3D -7, y=3D -1, z=3D =
340 2&gt;
341 pos=3D&lt;x=3D 20, y=3D-31, z=3D 13&gt;, vel=3D&lt;x=3D 5, y=3D 3, z=3D =
342 4&gt;
343 pos=3D&lt;x=3D -4, y=3D 6, z=3D 1&gt;, vel=3D&lt;x=3D -1, y=3D 1, z=3D -=
344 3&gt;
345 pos=3D&lt;x=3D 15, y=3D 1, z=3D -5&gt;, vel=3D&lt;x=3D 3, y=3D -3, z=3D -=
346 3&gt;
347
348 After 60 steps:
349 pos=3D&lt;x=3D 36, y=3D-10, z=3D 6&gt;, vel=3D&lt;x=3D 5, y=3D 0, z=3D =
350 3&gt;
351 pos=3D&lt;x=3D-18, y=3D 10, z=3D 9&gt;, vel=3D&lt;x=3D -3, y=3D -7, z=3D =
352 5&gt;
353 pos=3D&lt;x=3D 8, y=3D-12, z=3D -3&gt;, vel=3D&lt;x=3D -2, y=3D 1, z=3D -=
354 7&gt;
355 pos=3D&lt;x=3D-18, y=3D -8, z=3D -2&gt;, vel=3D&lt;x=3D 0, y=3D 6, z=3D -=
356 1&gt;
357
358 After 70 steps:
359 pos=3D&lt;x=3D-33, y=3D -6, z=3D 5&gt;, vel=3D&lt;x=3D -5, y=3D -4, z=3D =
360 7&gt;
361 pos=3D&lt;x=3D 13, y=3D -9, z=3D 2&gt;, vel=3D&lt;x=3D -2, y=3D 11, z=3D =
362 3&gt;
363 pos=3D&lt;x=3D 11, y=3D -8, z=3D 2&gt;, vel=3D&lt;x=3D 8, y=3D -6, z=3D -=
364 7&gt;
365 pos=3D&lt;x=3D 17, y=3D 3, z=3D 1&gt;, vel=3D&lt;x=3D -1, y=3D -1, z=3D -=
366 3&gt;
367
368 After 80 steps:
369 pos=3D&lt;x=3D 30, y=3D -8, z=3D 3&gt;, vel=3D&lt;x=3D 3, y=3D 3, z=3D =
370 0&gt;
371 pos=3D&lt;x=3D -2, y=3D -4, z=3D 0&gt;, vel=3D&lt;x=3D 4, y=3D-13, z=3D =
372 2&gt;
373 pos=3D&lt;x=3D-18, y=3D -7, z=3D 15&gt;, vel=3D&lt;x=3D -8, y=3D 2, z=3D -=
374 2&gt;
375 pos=3D&lt;x=3D -2, y=3D -1, z=3D -8&gt;, vel=3D&lt;x=3D 1, y=3D 8, z=3D =
376 0&gt;
377
378 After 90 steps:
379 pos=3D&lt;x=3D-25, y=3D -1, z=3D 4&gt;, vel=3D&lt;x=3D 1, y=3D -3, z=3D =
380 4&gt;
381 pos=3D&lt;x=3D 2, y=3D -9, z=3D 0&gt;, vel=3D&lt;x=3D -3, y=3D 13, z=3D -=
382 1&gt;
383 pos=3D&lt;x=3D 32, y=3D -8, z=3D 14&gt;, vel=3D&lt;x=3D 5, y=3D -4, z=3D =
384 6&gt;
385 pos=3D&lt;x=3D -1, y=3D -2, z=3D -8&gt;, vel=3D&lt;x=3D -3, y=3D -6, z=3D -=
386 9&gt;
387
388 After 100 steps:
389 pos=3D&lt;x=3D 8, y=3D-12, z=3D -9&gt;, vel=3D&lt;x=3D -7, y=3D 3, z=3D =
390 0&gt;
391 pos=3D&lt;x=3D 13, y=3D 16, z=3D -3&gt;, vel=3D&lt;x=3D 3, y=3D-11, z=3D -=
392 5&gt;
393 pos=3D&lt;x=3D-29, y=3D-11, z=3D -1&gt;, vel=3D&lt;x=3D -3, y=3D 7, z=3D =
394 4&gt;
395 pos=3D&lt;x=3D 16, y=3D-13, z=3D 23&gt;, vel=3D&lt;x=3D 7, y=3D 1, z=3D =
396 1&gt;
397
398 Energy after 100 steps:
399 pot: 8 + 12 + 9 =3D 29; kin: 7 + 3 + 0 =3D 10; total: 29 * 10 =3D 29=
400 0
401 pot: 13 + 16 + 3 =3D 32; kin: 3 + 11 + 5 =3D 19; total: 32 * 19 =3D 60=
402 8
403 pot: 29 + 11 + 1 =3D 41; kin: 3 + 7 + 4 =3D 14; total: 41 * 14 =3D 57=
404 4
405 pot: 16 + 13 + 23 =3D 52; kin: 7 + 1 + 1 =3D 9; total: 52 * 9 =3D 46=
406 8
407 Sum of total energy: 290 + 608 + 574 + 468 =3D <em>1940</em>
408 </code></pre>
409 <p><em>What is the total energy in the system</em> after simulating the moo=
410 ns given in your scan for <code>1000</code> steps?</p>
411 </article>
412 <p>Your puzzle answer was <code>6735</code>.</p><article class=3D"day-desc"=
413 ><h2 id=3D"part2">--- Part Two ---</h2><p>All this drifting around in space=
414 makes you wonder about the nature of the universe. Does history really re=
415 peat itself? You're curious whether the moons will ever return to a previo=
416 us state.</p>
417 <p>Determine <em>the number of steps</em> that must occur before all of the=
418 moons' <em>positions and velocities</em> exactly match a previous point in=
419 time.</p>
420 <p>For example, the first example above takes <code>2772</code> steps befor=
421 e they exactly match a previous point in time; it eventually returns to the=
422 initial state:</p>
423 <pre><code>After 0 steps:
424 pos=3D&lt;x=3D -1, y=3D 0, z=3D 2&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
425 0&gt;
426 pos=3D&lt;x=3D 2, y=3D-10, z=3D -7&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
427 0&gt;
428 pos=3D&lt;x=3D 4, y=3D -8, z=3D 8&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
429 0&gt;
430 pos=3D&lt;x=3D 3, y=3D 5, z=3D -1&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
431 0&gt;
432
433 After 2770 steps:
434 pos=3D&lt;x=3D 2, y=3D -1, z=3D 1&gt;, vel=3D&lt;x=3D -3, y=3D 2, z=3D =
435 2&gt;
436 pos=3D&lt;x=3D 3, y=3D -7, z=3D -4&gt;, vel=3D&lt;x=3D 2, y=3D -5, z=3D -=
437 6&gt;
438 pos=3D&lt;x=3D 1, y=3D -7, z=3D 5&gt;, vel=3D&lt;x=3D 0, y=3D -3, z=3D =
439 6&gt;
440 pos=3D&lt;x=3D 2, y=3D 2, z=3D 0&gt;, vel=3D&lt;x=3D 1, y=3D 6, z=3D -=
441 2&gt;
442
443 After 2771 steps:
444 pos=3D&lt;x=3D -1, y=3D 0, z=3D 2&gt;, vel=3D&lt;x=3D -3, y=3D 1, z=3D =
445 1&gt;
446 pos=3D&lt;x=3D 2, y=3D-10, z=3D -7&gt;, vel=3D&lt;x=3D -1, y=3D -3, z=3D -=
447 3&gt;
448 pos=3D&lt;x=3D 4, y=3D -8, z=3D 8&gt;, vel=3D&lt;x=3D 3, y=3D -1, z=3D =
449 3&gt;
450 pos=3D&lt;x=3D 3, y=3D 5, z=3D -1&gt;, vel=3D&lt;x=3D 1, y=3D 3, z=3D -=
451 1&gt;
452
453 After 2772 steps:
454 pos=3D&lt;x=3D -1, y=3D 0, z=3D 2&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
455 0&gt;
456 pos=3D&lt;x=3D 2, y=3D-10, z=3D -7&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
457 0&gt;
458 pos=3D&lt;x=3D 4, y=3D -8, z=3D 8&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
459 0&gt;
460 pos=3D&lt;x=3D 3, y=3D 5, z=3D -1&gt;, vel=3D&lt;x=3D 0, y=3D 0, z=3D =
461 0&gt;
462 </code></pre>
463 <p>Of course, the universe might last for a <em>very long time</em> before =
464 repeating. Here's a copy of the second example from above:</p>
465 <pre><code>&lt;x=3D-8, y=3D-10, z=3D0&gt;
466 &lt;x=3D5, y=3D5, z=3D10&gt;
467 &lt;x=3D2, y=3D-7, z=3D3&gt;
468 &lt;x=3D9, y=3D-8, z=3D-3&gt;
469 </code></pre>
470 <p>This set of initial positions takes <code>4686774924</code> steps before=
471 it repeats a previous state! Clearly, you might need to <em>find a more ef=
472 ficient way to simulate the universe</em>.</p>
473 <p><em>How many steps does it take</em> to reach the first state that exact=
474 ly matches a previous state?</p>
475 </article>
476 <p>Your puzzle answer was <code>326489627728984</code>.</p><p class=3D"day-=
477 success">Both parts of this puzzle are complete! They provide two gold star=
478 s: **</p>
479 <p>At this point, you should <a href=3D"https://adventofcode.com/2019" data=
480 -ss1576248183=3D"1">return to your Advent calendar</a> and try another puzz=
481 le.</p>
482 <p>If you still want to see it, you can <a href=3D"https://adventofcode.com=
483 /2019/day/12/input" target=3D"_blank" data-ss1576248183=3D"1">get your puzz=
484 le input</a>.</p>
485 <p>You can also <span class=3D"share">[Share<span class=3D"share-content">o=
486 n
487 <a href=3D"https://twitter.com/intent/tweet?text=3DI%27ve+completed+%22Th=
488 e+N%2DBody+Problem%22+%2D+Day+12+%2D+Advent+of+Code+2019&amp;url=3Dhttps%3A=
489 %2F%2Fadventofcode%2Ecom%2F2019%2Fday%2F12&amp;related=3Dericwastl&amp;hash=
490 tags=3DAdventOfCode" target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=
491 =3D"1">Twitter</a>
492 <a target=3D"_blank" rel=3D"noreferrer" data-ss1576248183=3D"1">Mastodon<=
493 /a></span>]</span> this puzzle.</p>
494 </main>
495
496 <!-- ga -->
497
498 <!-- /ga -->
499
500 </body></html>
501 ------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----
502 Content-Type: text/css
503 Content-Transfer-Encoding: quoted-printable
504 Content-Location: https://fonts.googleapis.com/css?family=Source+Code+Pro:300&subset=latin,latin-ext
505
506 @charset "utf-8";
507
508 @font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=
509 t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =
510 url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=
511 7PqtlsnDvucq_mk.woff2") format("woff2"); unicode-range: U+460-52F, U+1C80-1=
512 C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
513
514 @font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=
515 t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =
516 url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=
517 7PqtlsnDt-cq_mk.woff2") format("woff2"); unicode-range: U+400-45F, U+490-49=
518 1, U+4B0-4B1, U+2116; }
519
520 @font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=
521 t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =
522 url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=
523 7PqtlsnDsOcq_mk.woff2") format("woff2"); unicode-range: U+370-3FF; }
524
525 @font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=
526 t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =
527 url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=
528 7PqtlsnDvOcq_mk.woff2") format("woff2"); unicode-range: U+102-103, U+110-11=
529 1, U+1EA0-1EF9, U+20AB; }
530
531 @font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=
532 t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =
533 url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=
534 7PqtlsnDvecq_mk.woff2") format("woff2"); unicode-range: U+100-24F, U+259, U=
535 +1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A=
536 7FF; }
537
538 @font-face { font-family: "Source Code Pro"; font-style: normal; font-weigh=
539 t: 300; src: local("Source Code Pro Light"), local("SourceCodePro-Light"), =
540 url("https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM=
541 7PqtlsnDs-cq.woff2") format("woff2"); unicode-range: U+0-FF, U+131, U+152-1=
542 53, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+2000-206F, U+2074, U+20AC, U+2122, U+=
543 2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
544 ------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----
545 Content-Type: font/woff2
546 Content-Transfer-Encoding: base64
547 Content-Location: https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM7PqtlsnDsOcq_mk.woff2
548
549 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
679 SKT0wM/f7DbY1bHt6/DTNq2/BgAAAA==
680
681 ------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----
682 Content-Type: font/woff2
683 Content-Transfer-Encoding: base64
684 Content-Location: https://fonts.gstatic.com/s/sourcecodepro/v11/HI_XiYsKILxRpg3hIP6sJ7fM7PqtlsnDs-cq.woff2
685
686 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
936
937 ------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----
938 Content-Type: text/css
939 Content-Transfer-Encoding: quoted-printable
940 Content-Location: https://adventofcode.com/static/style.css?24
941
942 @charset "utf-8";
943
944 body { background: rgb(15, 15, 35); color: rgb(204, 204, 204); font-family:=
945 "Source Code Pro", monospace; font-size: 14pt; min-width: 60em; }
946
947 img { border: 0px; }
948
949 a { outline: 0px; }
950
951 main, figure, figcaption { display: block; }
952
953 pre, code { font-family: "Source Code Pro", monospace; }
954
955 header, main { text-size-adjust: none; }
956
957 a { text-decoration: none; color: rgb(0, 153, 0); }
958
959 a:hover, a:focus { color: rgb(153, 255, 153); }
960
961 h1, h2 { font-size: 1em; font-weight: normal; }
962
963 code { position: relative; display: inline-block; margin: 0px; padding: 0px=
964 ; }
965
966 code::before { z-index: -1; content: ""; position: absolute; display: block=
967 ; left: -2px; right: -2px; top: 3px; bottom: 0px; border: 1px solid rgb(51,=
968 51, 64); background: rgb(16, 16, 26); }
969
970 pre.wrap { max-width: 100%; white-space: pre-wrap; }
971
972 .quiet { opacity: 0.5; }
973
974 p.wrap { width: 45em; }
975
976 .hidden-layout { padding: 0px 0.5em; border: 1px solid transparent; }
977
978 .hidden { border: 1px dotted gray; overflow: hidden; position: relative; pa=
979 dding: 0px 0.5em; }
980
981 .hidden::before { content: "(hover to view)"; position: absolute; opacity: =
982 0.5; text-align: center; left: 0px; top: 0px; width: 100%; }
983
984 .hidden > * { visibility: hidden; }
985
986 .hidden:hover { border-color: transparent; }
987
988 .hidden:hover::before { display: none; }
989
990 .hidden:hover > * { visibility: visible; }
991
992 .warning:not(.warning-active) { transition: color 1s ease 0s, opacity 1s ea=
993 se 0s; }
994
995 .warning-active { color: rgb(255, 0, 0); opacity: 1; }
996
997 .supporter-badge { color: rgb(255, 255, 102); }
998
999 a.supporter-badge:hover, a.supporter-badge:focus { text-decoration: none; c=
1000 olor: rgb(255, 255, 204); text-shadow: rgb(255, 255, 102) 0px 0px 5px; }
1001
1002 .sponsor-badge { color: rgb(121, 162, 216); }
1003
1004 a.sponsor-badge:hover, a.sponsor-badge:focus { text-decoration: none; color=
1005 : rgb(204, 219, 237); text-shadow: rgb(121, 162, 216) 0px 0px 5px; }
1006
1007 #sidebar { width: 200px; float: right; margin: 0px 15px 2em 2em; }
1008
1009 #sponsor { margin-bottom: 2.5em; }
1010
1011 header { white-space: nowrap; cursor: default; z-index: 100; margin-bottom:=
1012 2em; }
1013
1014 header h1 { display: inline-block; margin: 0px; padding-right: 1em; }
1015
1016 header h1 a, header h1 span { display: inline-block; text-decoration: none;=
1017 color: rgb(0, 204, 0); text-shadow: rgb(0, 204, 0) 0px 0px 2px, rgb(0, 204=
1018 , 0) 0px 0px 5px; }
1019
1020 header h1 a:hover, header h1 a:focus { color: rgb(153, 255, 153); text-shad=
1021 ow: rgb(153, 255, 153) 0px 0px 2px, rgb(153, 255, 153) 0px 0px 5px; }
1022
1023 header h1.title-event .title-event-wrap { opacity: 0.33; white-space: pre; =
1024 }
1025
1026 header .user { display: inline-block; padding-left: 1em; }
1027
1028 header .user .star-count { color: rgb(255, 255, 102); }
1029
1030 header nav { display: inline-block; }
1031
1032 header nav ul { list-style-type: none; padding: 0px; margin: 0px; display: =
1033 inline-block; }
1034
1035 header nav li { display: inline-block; padding: 0px 0.6em; }
1036
1037 header nav a { display: inline-block; text-decoration: none; outline: none;=
1038 }
1039
1040 input[type=3D"text"], textarea { color: inherit; border: 1px solid rgb(102,=
1041 102, 102); background: rgb(16, 16, 26); padding: 0px 2px; font-family: inh=
1042 erit; font-size: inherit; margin: 0px; }
1043
1044 textarea { vertical-align: top; }
1045
1046 label img { vertical-align: bottom; position: relative; top: -3px; margin-r=
1047 ight: 0.3em; }
1048
1049 input[type=3D"radio"] { display: none; }
1050
1051 input[type=3D"radio"] ~ span { cursor: pointer; display: inline-block; }
1052
1053 input[type=3D"radio"] ~ span::before { content: "( ) "; }
1054
1055 input[type=3D"radio"] ~ span:hover, input[type=3D"radio"] ~ span:focus { ba=
1056 ckground-color: rgb(25, 25, 59); }
1057
1058 input[type=3D"radio"]:checked ~ span { color: rgb(255, 255, 255); }
1059
1060 input[type=3D"radio"]:checked ~ span::before { content: "(O) "; }
1061
1062 input[type=3D"checkbox"] { display: none; }
1063
1064 input[type=3D"checkbox"] ~ span { cursor: pointer; display: inline-block; }
1065
1066 input[type=3D"checkbox"] ~ span::before { content: "[ ] "; }
1067
1068 input[type=3D"checkbox"] ~ span:hover, input[type=3D"checkbox"] ~ span:focu=
1069 s { background-color: rgb(25, 25, 59); }
1070
1071 input[type=3D"checkbox"]:checked ~ span { color: rgb(255, 255, 255); }
1072
1073 input[type=3D"checkbox"]:checked ~ span::before { content: "[X] "; }
1074
1075 input[type=3D"checkbox"]:disabled ~ span { opacity: 0.3; cursor: default; }
1076
1077 input[type=3D"checkbox"]:disabled ~ span::before { content: "[-] "; }
1078
1079 input[type=3D"checkbox"]:disabled ~ span:hover { background-color: transpar=
1080 ent; }
1081
1082 input[type=3D"submit"] { background: transparent; border: 0px; font-family:=
1083 inherit; font-size: inherit; margin: 0px; padding: 0px; color: rgb(0, 153,=
1084 0); cursor: pointer; }
1085
1086 input[type=3D"submit"]:hover, input[type=3D"submit"]:focus { color: rgb(153=
1087 , 255, 153); }
1088
1089 article { width: 45em; margin-bottom: 2em; margin-top: 2em; }
1090
1091 article:first-child { margin-top: 0px; }
1092
1093 article h2 { color: rgb(255, 255, 255); margin-top: 1em; margin-bottom: 1em=
1094 ; white-space: nowrap; }
1095
1096 article h2 + * { margin-top: 0px; }
1097
1098 article em { color: rgb(255, 255, 255); font-style: normal; text-shadow: rg=
1099 b(255, 255, 255) 0px 0px 5px; }
1100
1101 article em.star { color: rgb(255, 255, 102); font-style: normal; text-shado=
1102 w: rgb(255, 255, 102) 0px 0px 5px; }
1103
1104 article a { white-space: nowrap; }
1105
1106 article .aside { opacity: 0.6; }
1107
1108 article ul { list-style-type: none; padding: 0px; }
1109
1110 article li { padding-left: 2.5em; position: relative; }
1111
1112 article li::before { content: "=C2=A0=C2=A0-=C2=A0"; position: absolute; le=
1113 ft: 0px; top: 0px; }
1114
1115 .day-success { color: rgb(255, 255, 102); text-shadow: rgb(255, 255, 102) 0=
1116 px 0px 5px; }
1117
1118 form#settings input[type=3D"radio"] ~ span { min-width: 30em; }
1119
1120 form#settings input[type=3D"checkbox"] ~ span { min-width: 30em; }
1121
1122 .share { color: rgb(0, 153, 0); cursor: default; transition: color 0.2s eas=
1123 e 1s; }
1124
1125 .share:hover, .share:focus-within { color: rgb(170, 255, 170); transition: =
1126 color 0.2s ease 0s; }
1127
1128 .share .share-content { display: inline-block; vertical-align: text-bottom;=
1129 white-space: nowrap; overflow: hidden; max-width: 0px; transition: max-wid=
1130 th 0.2s ease 1s; }
1131
1132 .share .share-content::before { content: "=C2=A0"; }
1133
1134 .share .share-content::after { }
1135
1136 .share:hover .share-content, .share:focus-within .share-content { max-width=
1137 : 45em; transition: max-width 0.2s ease 0s; }
1138
1139 .puzzle-input { border: 1px solid rgb(153, 153, 153); background: rgb(51, 5=
1140 1, 51); color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =
1141 5px; }
1142
1143 .calendar { cursor: default; user-select: none; }
1144
1145 .calendar > span { color: rgb(51, 51, 51); }
1146
1147 .calendar > a { text-decoration: none; color: rgb(102, 102, 102); outline: =
1148 none; cursor: default; }
1149
1150 .calendar a:hover, .calendar a:focus { background-color: rgba(119, 119, 165=
1151 , 0.2); cursor: pointer; }
1152
1153 #calendar-countdown { padding-left: 0.5em; color: rgb(204, 204, 204); }
1154
1155 .calendar .calendar-day { color: rgb(102, 102, 102); }
1156
1157 .calendar a .calendar-day { color: rgb(204, 204, 204); }
1158
1159 .calendar a .calendar-mark-complete, .calendar a .calendar-mark-verycomplet=
1160 e { visibility: hidden; }
1161
1162 .calendar a.calendar-complete .calendar-mark-complete, .calendar a.calendar=
1163 -verycomplete .calendar-mark-complete { visibility: visible; color: rgb(255=
1164 , 255, 102); }
1165
1166 .calendar a.calendar-verycomplete .calendar-mark-verycomplete { visibility:=
1167 visible; color: rgb(255, 255, 102); }
1168
1169 .calendar .calendar-day-new { animation: 5s ease 0s 1 normal none running a=
1170 nim-day-new; }
1171
1172 .calendar .calendar-day-new .calendar-day { animation: 5s ease 0s 1 normal =
1173 none running anim-day-new-day; }
1174
1175 @keyframes anim-day-new {=20
1176 0% { color: rgb(51, 51, 51); text-shadow: transparent 0px 0px 5px; }
1177 25% { color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =
1178 5px; }
1179 100% { color: rgb(102, 102, 102); text-shadow: transparent 0px 0px 5px; }
1180 }
1181
1182 @keyframes anim-day-new-day {=20
1183 0% { color: rgb(102, 102, 102); text-shadow: transparent 0px 0px 5px; }
1184 25% { color: rgb(255, 255, 255); text-shadow: rgb(255, 255, 255) 0px 0px =
1185 5px; }
1186 100% { color: rgb(204, 204, 204); text-shadow: transparent 0px 0px 5px; }
1187 }
1188
1189 .stats > span, .stats > span .stats-firstonly, .stats > span .stats-both { =
1190 color: rgb(102, 102, 102); }
1191
1192 .stats > a { color: rgb(204, 204, 204); min-width: 35em; display: inline-bl=
1193 ock; }
1194
1195 .stats > a:hover, .stats > a:focus { background-color: rgb(30, 30, 70); }
1196
1197 .stats-firstonly { color: rgb(153, 153, 204); }
1198
1199 .stats-both { color: rgb(255, 255, 102); }
1200
1201 .leaderboard-daylinks { cursor: default; }
1202
1203 .leaderboard-daylinks-selected { color: rgb(255, 255, 255); text-shadow: rg=
1204 b(255, 255, 255) 0px 0px 5px; }
1205
1206 .leaderboard-daydesc-first { color: rgb(153, 153, 204); }
1207
1208 .leaderboard-daydesc-both { color: rgb(255, 255, 102); }
1209
1210 .leaderboard-entry { white-space: pre; }
1211
1212 .leaderboard-entry .leaderboard-totalscore { color: rgb(255, 255, 255); }
1213
1214 .leaderboard-anon { opacity: 0.6; }
1215
1216 .leaderboard-userphoto { display: inline-block; height: 20px; width: 20px; =
1217 margin: 0px 0.5em; text-align: center; }
1218
1219 .leaderboard-userphoto img { height: 20px; max-width: 20px; vertical-align:=
1220 middle; position: relative; top: -2px; }
1221
1222 .leaderboard-time { opacity: 0.5; }
1223
1224 .privboard-row { white-space: pre; }
1225
1226 .privboard-row .star-count { color: rgb(255, 255, 102); }
1227
1228 .privboard-name { vertical-align: text-bottom; }
1229
1230 .privboard-days > span { display: inline-block; color: rgb(51, 51, 51); }
1231
1232 .privboard-days > a { display: inline-block; }
1233
1234 .privboard-star-locked { visibility: hidden; }
1235
1236 .privboard-star-unlocked { color: rgb(51, 51, 51); }
1237
1238 .privboard-star-firstonly { color: rgb(153, 153, 204); }
1239
1240 .privboard-star-both { color: rgb(255, 255, 102); }
1241
1242 .privboard-delbtn { opacity: 0.33; }
1243
1244 .privboard-row:hover .privboard-delbtn { opacity: 1; }
1245
1246 .sponsors { width: 46em; }
1247
1248 .sponsor { margin: 1em 0px; }
1249 ------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra----
1250 Content-Type: text/css
1251 Content-Transfer-Encoding: quoted-printable
1252 Content-Location: https://adventofcode.com/static/highcontrast.css?0
1253
1254 @charset "utf-8";
1255
1256 * { background: white !important; color: black !important; text-shadow: non=
1257 e !important; }
1258
1259 a { color: rgb(0, 0, 255) !important; text-decoration: underline !important=
1260 ; }
1261
1262 em { font-weight: 900 !important; }
1263 ------MultipartBoundary--rL24wc9zhYENr4dW4UDBYdnJboD0E4SFlog1e1oKra------