diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-05-07 16:09:43 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-05-07 16:09:43 +0800 |
commit | 7c3b65e0e91161526c5f8d6feebef1199709c6a8 (patch) | |
tree | f3235b3ecd432df56f8f16dbd0f8be487fd54cb8 | |
parent | dde34a27133632aa7892eb4533890aea5ea04efb (diff) | |
download | advent-of-code-7c3b65e0e91161526c5f8d6feebef1199709c6a8.tar.gz advent-of-code-7c3b65e0e91161526c5f8d6feebef1199709c6a8.zip |
day8s
31 files changed, 2380 insertions, 0 deletions
diff --git a/src/2016/day8/README.md b/src/2016/day8/README.md new file mode 100644 index 0000000..33334dc --- /dev/null +++ b/src/2016/day8/README.md @@ -0,0 +1,45 @@ +--- Day 8: Two-Factor Authentication --- + +You come across a door implementing what you can only assume is an implementation of two-factor authentication after a long game of requirements telephone. + +To get past the door, you first swipe a keycard (no problem; there was one on a nearby desk). Then, it displays a code on a little screen, and you type that code on a keypad. Then, presumably, the door unlocks. + +Unfortunately, the screen has been smashed. After a few minutes, you've taken everything apart and figured out how it works. Now you just have to work out what the screen would have displayed. + +The magnetic strip on the card you swiped encodes a series of instructions for the screen; these instructions are your puzzle input. The screen is 50 pixels wide and 6 pixels tall, all of which start off, and is capable of three somewhat peculiar operations: + + rect AxB turns on all of the pixels in a rectangle at the top-left of the screen which is A wide and B tall. + rotate row y=A by B shifts all of the pixels in row A (0 is the top row) right by B pixels. Pixels that would fall off the right end appear at the left end of the row. + rotate column x=A by B shifts all of the pixels in column A (0 is the left column) down by B pixels. Pixels that would fall off the bottom appear at the top of the column. + +For example, here is a simple sequence on a smaller screen: + + rect 3x2 creates a small rectangle in the top-left corner: + + ###.... + ###.... + ....... + + rotate column x=1 by 1 rotates the second column down by one pixel: + + #.#.... + ###.... + .#..... + + rotate row y=0 by 4 rotates the top row right by four pixels: + + ....#.# + ###.... + .#..... + + rotate column x=1 by 1 again rotates the second column down by one pixel, causing the bottom pixel to wrap back to the top: + + .#..#.# + #.#.... + .#..... + +As you can see, this display technology is extremely powerful, and will soon dominate the tiny-code-displaying-screen market. That's what the advertisement on the back of the display tries to convince you, anyway. + +There seems to be an intermediate check of the voltage used by the display: after you swipe your card, if the screen did work, how many pixels should be lit? + + diff --git a/src/2016/day8/aoc.cpp b/src/2016/day8/aoc.cpp new file mode 100644 index 0000000..55f4247 --- /dev/null +++ b/src/2016/day8/aoc.cpp @@ -0,0 +1,5 @@ +#include "aoc.h" + +namespace aoc2016 { + +} diff --git a/src/2016/day8/aoc.h b/src/2016/day8/aoc.h new file mode 100644 index 0000000..95823fe --- /dev/null +++ b/src/2016/day8/aoc.h @@ -0,0 +1,6 @@ +#pragma once +#include "common.h" + +namespace aoc2016 { + +} diff --git a/src/2016/day8/input b/src/2016/day8/input new file mode 100644 index 0000000..d827762 --- /dev/null +++ b/src/2016/day8/input @@ -0,0 +1,194 @@ +rect 1x1 +rotate row y=0 by 7 +rect 1x1 +rotate row y=0 by 5 +rect 1x1 +rotate row y=0 by 5 +rect 1x1 +rotate row y=0 by 2 +rect 1x1 +rotate row y=0 by 3 +rect 1x1 +rotate row y=0 by 5 +rect 1x1 +rotate row y=0 by 3 +rect 1x1 +rotate row y=0 by 2 +rect 1x1 +rotate row y=0 by 3 +rect 2x1 +rotate row y=0 by 7 +rect 6x1 +rotate row y=0 by 3 +rect 2x1 +rotate row y=0 by 2 +rect 1x2 +rotate row y=1 by 10 +rotate row y=0 by 3 +rotate column x=0 by 1 +rect 2x1 +rotate column x=20 by 1 +rotate column x=15 by 1 +rotate column x=5 by 1 +rotate row y=1 by 5 +rotate row y=0 by 2 +rect 1x2 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate row y=2 by 15 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate row y=2 by 5 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate row y=2 by 10 +rotate row y=0 by 10 +rotate column x=8 by 1 +rotate column x=5 by 1 +rotate column x=0 by 1 +rect 9x1 +rotate column x=27 by 1 +rotate row y=0 by 5 +rotate column x=0 by 1 +rect 4x1 +rotate column x=42 by 1 +rotate column x=40 by 1 +rotate column x=22 by 1 +rotate column x=17 by 1 +rotate column x=12 by 1 +rotate column x=7 by 1 +rotate column x=2 by 1 +rotate row y=3 by 10 +rotate row y=2 by 5 +rotate row y=1 by 3 +rotate row y=0 by 10 +rect 1x4 +rotate column x=37 by 2 +rotate row y=3 by 18 +rotate row y=2 by 30 +rotate row y=1 by 7 +rotate row y=0 by 2 +rotate column x=13 by 3 +rotate column x=12 by 1 +rotate column x=10 by 1 +rotate column x=7 by 1 +rotate column x=6 by 3 +rotate column x=5 by 1 +rotate column x=3 by 3 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 14x1 +rotate column x=38 by 3 +rotate row y=3 by 12 +rotate row y=2 by 10 +rotate row y=0 by 10 +rotate column x=7 by 1 +rotate column x=5 by 1 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 9x1 +rotate row y=4 by 20 +rotate row y=3 by 25 +rotate row y=2 by 10 +rotate row y=0 by 15 +rotate column x=12 by 1 +rotate column x=10 by 1 +rotate column x=8 by 3 +rotate column x=7 by 1 +rotate column x=5 by 1 +rotate column x=3 by 3 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 14x1 +rotate column x=34 by 1 +rotate row y=1 by 45 +rotate column x=47 by 1 +rotate column x=42 by 1 +rotate column x=19 by 1 +rotate column x=9 by 2 +rotate row y=4 by 7 +rotate row y=3 by 20 +rotate row y=0 by 7 +rotate column x=5 by 1 +rotate column x=3 by 1 +rotate column x=2 by 1 +rotate column x=0 by 1 +rect 6x1 +rotate row y=4 by 8 +rotate row y=3 by 5 +rotate row y=1 by 5 +rotate column x=5 by 1 +rotate column x=4 by 1 +rotate column x=3 by 2 +rotate column x=2 by 1 +rotate column x=1 by 3 +rotate column x=0 by 1 +rect 6x1 +rotate column x=36 by 3 +rotate column x=25 by 3 +rotate column x=18 by 3 +rotate column x=11 by 3 +rotate column x=3 by 4 +rotate row y=4 by 5 +rotate row y=3 by 5 +rotate row y=2 by 8 +rotate row y=1 by 8 +rotate row y=0 by 3 +rotate column x=3 by 4 +rotate column x=0 by 4 +rect 4x4 +rotate row y=4 by 10 +rotate row y=3 by 20 +rotate row y=1 by 10 +rotate row y=0 by 10 +rotate column x=8 by 1 +rotate column x=7 by 1 +rotate column x=6 by 1 +rotate column x=5 by 1 +rotate column x=3 by 1 +rotate column x=2 by 1 +rotate column x=1 by 1 +rotate column x=0 by 1 +rect 9x1 +rotate row y=0 by 40 +rotate column x=44 by 1 +rotate column x=35 by 5 +rotate column x=18 by 5 +rotate column x=15 by 3 +rotate column x=10 by 5 +rotate row y=5 by 15 +rotate row y=4 by 10 +rotate row y=3 by 40 +rotate row y=2 by 20 +rotate row y=1 by 45 +rotate row y=0 by 35 +rotate column x=48 by 1 +rotate column x=47 by 5 +rotate column x=46 by 5 +rotate column x=45 by 1 +rotate column x=43 by 1 +rotate column x=40 by 1 +rotate column x=38 by 2 +rotate column x=37 by 3 +rotate column x=36 by 2 +rotate column x=32 by 2 +rotate column x=31 by 2 +rotate column x=28 by 1 +rotate column x=23 by 3 +rotate column x=22 by 3 +rotate column x=21 by 5 +rotate column x=20 by 1 +rotate column x=18 by 1 +rotate column x=17 by 3 +rotate column x=13 by 1 +rotate column x=10 by 1 +rotate column x=8 by 1 +rotate column x=7 by 5 +rotate column x=6 by 5 +rotate column x=5 by 1 +rotate column x=3 by 5 +rotate column x=2 by 5 +rotate column x=1 by 5 diff --git a/src/2017/day8/README.md b/src/2017/day8/README.md new file mode 100644 index 0000000..625d634 --- /dev/null +++ b/src/2017/day8/README.md @@ -0,0 +1,25 @@ +--- Day 8: I Heard You Like Registers --- + +You receive a signal directly from the CPU. Because of your recent assistance with jump instructions, it would like you to compute the result of a series of unusual register instructions. + +Each instruction consists of several parts: the register to modify, whether to increase or decrease that register's value, the amount by which to increase or decrease it, and a condition. If the condition fails, skip the instruction without modifying the register. The registers all start at 0. The instructions look like this: + +b inc 5 if a > 1 +a inc 1 if b < 5 +c dec -10 if a >= 1 +c inc -20 if c == 10 + +These instructions would be processed as follows: + + Because a starts at 0, it is not greater than 1, and so b is not modified. + a is increased by 1 (to 1) because b is less than 5 (it is 0). + c is decreased by -10 (to 10) because a is now greater than or equal to 1 (it is 1). + c is increased by -20 (to -10) because c is equal to 10. + +After this process, the largest value in any register is 1. + +You might also encounter <= (less than or equal to) or != (not equal to). However, the CPU doesn't have the bandwidth to tell you what all the registers are named, and leaves that to you to determine. + +What is the largest value in any register after completing the instructions in your puzzle input? + + diff --git a/src/2017/day8/aoc.cpp b/src/2017/day8/aoc.cpp new file mode 100644 index 0000000..ed2d9d3 --- /dev/null +++ b/src/2017/day8/aoc.cpp @@ -0,0 +1,5 @@ +#include "aoc.h" + +namespace aoc2017 { + +} diff --git a/src/2017/day8/aoc.h b/src/2017/day8/aoc.h new file mode 100644 index 0000000..7aacc4c --- /dev/null +++ b/src/2017/day8/aoc.h @@ -0,0 +1,6 @@ +#pragma once +#include "common.h" + +namespace aoc2017 { + +} diff --git a/src/2017/day8/input b/src/2017/day8/input new file mode 100644 index 0000000..fc7d14a --- /dev/null +++ b/src/2017/day8/input @@ -0,0 +1,1000 @@ +ba dec 37 if znx != 0 +zrn inc -344 if znx > -9 +ffz inc -928 if kjt > 3 +al inc -562 if py == 0 +odo dec 294 if odo >= 0 +o inc -232 if bef <= 2 +al inc 536 if bef >= -7 +o dec 688 if iz <= 2 +sms dec 407 if kjt == 0 +vg inc 245 if ije < 8 +ba inc 483 if app >= -7 +tsh dec -557 if vg > 242 +p inc 901 if o >= -929 +ga dec -352 if ffz < 8 +ffz inc -525 if vg < 248 +tsh inc 853 if ije == 0 +iw dec -390 if qps >= -7 +zrn inc 933 if ga == 352 +j dec 185 if qps != -7 +qps dec -340 if ije >= -3 +p dec -456 if app < 3 +kjt dec -831 if vg >= 246 +iz inc 899 if app > -5 +qps inc -579 if ije >= -2 +j inc -700 if app > -1 +cfl dec 943 if ga == 352 +py inc 20 if os != 10 +app dec 825 if zrn > 579 +vg inc -283 if py <= 23 +w dec 298 if al >= -29 +odo dec -383 if kjt <= 7 +tsh inc 784 if ije > -5 +p dec -838 if tsh == 2194 +j inc -992 if app != -816 +ba inc 385 if iw == 390 +py inc -324 if qps > -246 +bef dec 407 if znx != 1 +iz inc -288 if py != -294 +bef inc -800 if o <= -927 +p dec 471 if ga != 345 +ax inc -398 if iz != 613 +o inc 944 if iz == 611 +sms dec -228 if iz < 613 +os dec -81 if kjt <= -9 +zrn dec -155 if sms != -182 +sms dec 998 if bef < -399 +ax inc 387 if ffz <= -521 +ga inc -346 if w != -298 +cfl dec 270 if j >= -1878 +iw dec 306 if j >= -1880 +ga inc -22 if al >= -35 +sms inc -790 if sms != -1185 +cfl dec 865 if kjt > -3 +al dec 878 if o != 24 +znx inc 924 if ije > -6 +p inc 707 if py == -309 +iw dec 69 if sms == -1967 +w inc -808 if odo < 95 +ffz inc -729 if odo <= 97 +bef dec -80 if cfl >= -2079 +bef inc -389 if ax > -17 +ax inc -571 if zrn == 744 +al inc 356 if ax <= -585 +app dec -423 if tsh != 2197 +p dec 192 if odo > 88 +kjt dec 994 if odo <= 88 +ije dec -943 if iw == 15 +ga inc 152 if ba >= 859 +ije dec -551 if tsh == 2194 +app inc 586 if znx < 933 +zrn inc 537 if os > -1 +znx inc -548 if j != -1880 +znx dec -696 if al == -26 +znx inc 779 if app <= 191 +j dec -190 if cfl >= -2085 +ba inc -20 if odo > 81 +iz inc 200 if ffz > -1254 +ffz dec -468 if iz == 611 +sms dec 7 if app > 179 +sms inc 20 if bef <= -716 +w dec 194 if znx < 1844 +odo dec 291 if ax <= -589 +p inc 22 if ax >= -586 +ga inc 245 if ba > 844 +app inc -610 if py <= -295 +zrn inc -623 if iw > 6 +bef dec 268 if odo < 98 +w dec -175 if p == 1558 +iz dec -359 if al != -23 +al dec 356 if sms != -1953 +p inc 51 if zrn < 663 +qps dec -145 if py > -295 +p inc -262 if bef >= -974 +ax dec -561 if vg > -43 +ije dec 708 if zrn > 649 +sms dec 42 if ba > 847 +qps dec -918 if ax > -26 +kjt inc -3 if kjt == 0 +zrn dec 497 if kjt >= 7 +ax dec 131 if p > 1597 +zrn inc 71 if zrn < 662 +w dec 722 if zrn == 729 +qps inc -253 if zrn == 729 +os dec 946 if cfl < -2076 +ba inc -558 if j >= -1687 +al inc -39 if al >= -382 +p inc -172 if iw >= 10 +ffz dec -652 if cfl <= -2088 +j dec -429 if tsh == 2194 +ffz dec 697 if bef <= -979 +p dec 329 if ffz > -1487 +ije dec -368 if znx > 1848 +qps dec -363 if ffz >= -1486 +ga inc 203 if vg <= -34 +p dec -118 if p != 1104 +iw inc 744 if bef >= -993 +sms dec 993 if cfl == -2078 +tsh inc -103 if bef < -975 +qps dec -644 if odo <= 90 +vg inc 722 if znx != 1846 +iz inc 526 if ga < 922 +ax inc 274 if vg == 684 +ba inc 140 if ba > 299 +ax inc 982 if ije < 1156 +tsh inc -684 if ga > 928 +app dec 304 if bef == -984 +odo inc 53 if odo <= 97 +app inc -836 if bef > -992 +p inc -306 if tsh < 1408 +o dec -840 if znx <= 1857 +tsh dec 121 if p != 806 +app dec 422 if kjt != -9 +bef dec -706 if ffz != -1482 +ga inc 144 if os > -949 +ba dec 624 if kjt != -1 +o inc 542 if ije <= 1163 +os dec -521 if al <= -430 +zrn dec 701 if os >= -947 +os dec 165 if tsh != 1283 +kjt dec -219 if o <= 1407 +vg inc 590 if qps < 1425 +qps inc -163 if qps > 1427 +al dec -316 if ga == 1074 +vg dec -467 if p > 792 +vg dec -356 if ba != -333 +kjt inc -147 if j >= -1265 +cfl inc -253 if znx > 1850 +sms dec 744 if zrn != 28 +p dec 180 if kjt <= 72 +os dec 237 if odo <= 144 +vg inc -105 if iw <= 764 +al dec -436 if ffz != -1486 +al dec 679 if odo >= 136 +w inc 816 if ffz != -1483 +kjt dec -19 if bef != -284 +ije dec 525 if odo != 142 +ba dec -206 if znx > 1851 +ffz inc -677 if ffz != -1491 +w dec 232 if bef != -278 +al inc -337 if ije <= 1152 +os inc 591 if bef <= -273 +iw dec 956 if iw >= 756 +ax dec -380 if al <= -347 +w dec 27 if py >= -311 +sms inc 340 if p < 628 +iw inc -829 if os != -762 +os dec -309 if os > -765 +iz inc -780 if o >= 1397 +bef dec 228 if ije < 1164 +ba dec -654 if al == -344 +iw inc 389 if iz != 192 +zrn dec -833 if tsh != 1282 +os inc -439 if iz > 185 +bef inc 803 if tsh > 1294 +iw inc 311 if bef > -509 +o dec 975 if bef > -516 +ije inc 311 if ga == 1073 +bef dec -836 if znx <= 1859 +w inc 881 if w >= -1855 +ffz dec 97 if bef > 328 +sms inc -718 if ga < 1075 +ffz dec 903 if app > -1990 +zrn dec 876 if p > 614 +py dec 69 if ffz < -3159 +zrn inc 495 if ffz >= -3168 +ffz dec 297 if ba < -324 +j dec -81 if iz == 190 +iz inc 537 if iw >= -326 +sms dec 17 if kjt <= 95 +os inc 652 if qps != 1266 +iw dec -813 if ax <= 1491 +vg dec 861 if kjt >= 87 +ffz dec 263 if os == -235 +qps inc 665 if bef == 338 +ije inc -294 if vg >= 544 +ba inc 896 if app != -1978 +ffz inc -876 if p != 618 +al inc -443 if odo < 152 +tsh dec -566 if al > -783 +app inc -611 if zrn == 480 +p dec -194 if odo > 138 +py dec -877 if cfl < -2326 +j dec 964 if app < -2590 +o dec 975 if ga >= 1066 +zrn dec 49 if qps == 1270 +p inc 333 if odo == 142 +iw inc 621 if o <= -543 +app dec -397 if ije <= 1161 +kjt inc 487 if ba <= 569 +kjt dec -757 if ffz >= -3723 +al dec 514 if kjt != 1336 +bef inc 802 if iz == 727 +bef inc -693 if j < -2133 +cfl dec 0 if bef == 439 +j dec -415 if o < -547 +j inc 624 if ffz < -3715 +sms dec -156 if iw > 1103 +app inc -732 if ba == 562 +kjt dec -986 if ije > 1150 +o inc 723 if sms <= -3228 +app dec 40 if os >= -240 +os inc -118 if p <= 1154 +odo dec -254 if ga <= 1078 +iw dec -971 if ije > 1150 +iz dec 760 if bef <= 431 +zrn inc 78 if vg > 534 +o inc 642 if j < -1509 +p dec -3 if vg < 542 +j inc -718 if w != -974 +kjt dec -748 if qps <= 1274 +kjt inc -349 if ga >= 1070 +znx dec 441 if kjt >= 2710 +bef inc 200 if tsh < 1288 +o dec -838 if ije != 1156 +bef dec -588 if w <= -967 +vg dec 442 if ba >= 559 +ax dec -437 if zrn > 501 +odo inc -907 if py >= 499 +p inc 596 if vg <= 100 +zrn inc -136 if ije == 1154 +w dec 90 if tsh <= 1284 +ije dec -71 if tsh > 1284 +app dec 323 if ga <= 1067 +odo inc 526 if app <= -2972 +znx inc 807 if vg > 89 +vg inc 33 if w > -984 +al inc -171 if bef >= 1221 +w inc -907 if ffz < -3713 +zrn inc 486 if py <= 504 +cfl dec -974 if o > 1651 +kjt dec 269 if tsh <= 1288 +w dec 816 if ga > 1064 +ba dec 159 if iw <= 2075 +znx dec 319 if ije != 1222 +iw inc 561 if os == -353 +ije inc -269 if w != -2707 +sms dec -639 if ax > 1916 +odo dec -257 if p > 1741 +tsh dec -489 if cfl == -1357 +vg inc -188 if zrn != 862 +kjt inc -203 if sms < -2583 +iz dec 15 if znx >= 1895 +tsh dec -987 if ax <= 1924 +os dec -945 if p == 1744 +ije dec 941 if bef != 1221 +os dec 725 if j <= -1519 +py dec -15 if iz >= 717 +py inc -497 if ffz < -3715 +qps dec -614 if o <= 1657 +o dec -690 if p != 1736 +zrn inc 953 if iw != 2645 +app dec -732 if iw > 2636 +al inc -374 if odo >= 277 +zrn dec -286 if w <= -2695 +zrn dec -642 if j >= -1521 +iw dec 979 if os != 591 +odo inc -124 if os == 587 +kjt dec 76 if ba < 554 +kjt dec 313 if znx == 1894 +sms dec 614 if iz == 703 +bef inc -285 if ba != 555 +j inc 961 if ffz == -3720 +w inc 945 if tsh == 2762 +tsh dec -181 if cfl > -1367 +app inc -781 if zrn != 2732 +o inc 401 if tsh != 2949 +znx inc 240 if ba < 571 +ba dec 165 if o > 2749 +ije inc 45 if p == 1744 +j inc 549 if cfl != -1353 +vg inc -329 if app < -3013 +iw inc 847 if vg <= -377 +p inc 478 if tsh < 2948 +bef dec 97 if os < 587 +kjt dec -256 if os > 588 +znx dec 336 if os > 589 +o dec -508 if kjt >= 2509 +ga inc 939 if kjt < 2494 +bef dec 234 if j > -14 +ga dec -260 if bef <= 711 +py inc -306 if zrn < 2747 +kjt inc 704 if kjt >= 2505 +ga dec -490 if zrn < 2743 +app inc -167 if ije != 60 +ffz inc -228 if app <= -3022 +kjt inc -985 if znx <= 1803 +bef inc -88 if ije < 64 +iz inc -495 if qps != 1278 +znx dec 585 if odo != 269 +odo inc -211 if sms < -2584 +sms inc 48 if znx == 1226 +ga dec 434 if ax <= 1912 +odo inc 471 if bef >= 619 +p inc -758 if iz > 219 +zrn dec 114 if odo != 538 +zrn inc 32 if w <= -1747 +kjt inc -481 if ffz < -3945 +p inc 244 if ga <= 1832 +ffz dec -189 if zrn >= 2656 +ije dec 165 if kjt >= 1026 +w inc 723 if odo >= 531 +ije inc -626 if w > -1035 +cfl inc -791 if cfl >= -1361 +ba inc 81 if cfl <= -2140 +ga dec -237 if odo < 528 +vg inc 139 if p == 2466 +iw inc -139 if py <= -309 +o dec -100 if sms == -2589 +os inc -813 if ffz < -3757 +o dec 667 if iz == 212 +iw dec 362 if odo > 527 +odo dec -669 if os != -221 +odo dec -862 if ba < 484 +odo inc -240 if cfl != -2155 +znx inc 109 if ga <= 1831 +al inc 826 if cfl <= -2145 +py inc -607 if znx >= 1324 +tsh dec -280 if py < -899 +iz dec -149 if w <= -1022 +o inc -203 if iz < 373 +odo dec 535 if kjt > 1028 +odo dec -827 if py != -901 +p dec -972 if cfl < -2143 +os dec 578 if py <= -904 +al dec -754 if odo <= 1448 +znx dec 318 if p >= 3431 +zrn inc 101 if py < -897 +py inc -770 if tsh >= 3217 +odo inc -356 if iw >= 2153 +ffz inc 864 if ije == -731 +os dec 401 if tsh >= 3218 +cfl inc 287 if ga >= 1818 +vg inc 212 if os != -1193 +j inc -434 if odo != 1456 +ga inc -337 if kjt <= 1025 +ax dec 272 if al <= 112 +bef dec 795 if kjt == 1035 +al dec 21 if qps == 1270 +ga dec 566 if odo > 1441 +sms inc 928 if vg <= -27 +al dec 646 if znx <= 1014 +odo dec 905 if o <= 2649 +py dec -980 if bef <= -166 +ga dec -912 if o > 2645 +vg inc 205 if sms >= -1665 +py inc -324 if ffz < -2885 +sms inc -164 if odo != 541 +j dec -158 if zrn != 2763 +py inc -808 if zrn > 2755 +o inc -902 if o <= 2651 +al inc 532 if ba == 472 +sms dec 276 if tsh >= 3222 +j dec -98 if odo < 538 +vg inc -631 if al <= -572 +znx dec -433 if tsh > 3213 +bef dec -260 if al <= -556 +al inc -682 if iz < 361 +sms inc 121 if ax == 1649 +sms dec -57 if odo != 547 +os inc 280 if sms > -1763 +ba inc 327 if iw != 2142 +iz inc -433 if ax <= 1640 +al dec 419 if app < -3022 +iw inc 458 if o < 1753 +tsh dec 335 if py <= -1820 +w inc 384 if ax >= 1656 +j inc -164 if iz != 372 +bef inc -364 if odo <= 546 +znx dec 72 if vg < 178 +os inc 906 if al != -989 +app inc -804 if p == 3443 +tsh dec 293 if ga > 2178 +iw dec -49 if tsh <= 2894 +tsh dec 163 if ga != 2176 +w dec -885 if o != 1743 +ije dec -190 if qps > 1263 +al dec 240 if os == -14 +tsh dec 455 if odo < 547 +tsh inc -137 if p <= 3441 +al inc 816 if odo == 532 +tsh inc -478 if j > -456 +zrn inc -606 if iz != 367 +j dec 770 if ije <= -537 +os inc 403 if zrn == 2153 +zrn dec 211 if o <= 1745 +znx inc 684 if odo > 531 +o dec -278 if vg <= 163 +o dec 891 if cfl == -1869 +iw inc 830 if ije >= -545 +j inc -133 if ba <= 810 +vg dec 280 if ffz <= -2895 +sms inc -191 if w <= -139 +tsh dec -743 if p > 3431 +o inc -43 if kjt > 1033 +sms dec 938 if cfl > -1867 +qps dec 182 if j >= -1355 +p inc -811 if iw >= 3478 +kjt dec -526 if al == -1218 +ax dec 399 if bef == -279 +ax dec -67 if ba > 797 +bef inc -916 if ije >= -536 +ba dec 993 if p != 2622 +py dec 445 if kjt != 1028 +ga dec 862 if kjt == 1035 +vg dec -951 if zrn != 1932 +ba inc -757 if app > -3032 +p inc -518 if ax > 1311 +iw dec -441 if sms <= -2883 +ije dec 603 if app < -3015 +kjt dec -368 if ga == 1304 +ba dec -875 if ffz <= -2897 +odo inc -589 if vg <= 842 +qps inc 138 if tsh == 2398 +tsh inc 271 if zrn < 1939 +ax dec 81 if py >= -2276 +cfl dec 317 if ax != 1242 +bef dec 913 if iw > 3919 +iw inc -282 if o == 1702 +bef dec 743 if znx == 2053 +ije dec -432 if bef == -1935 +py inc -512 if tsh < 2408 +cfl inc 850 if app != -3025 +ba dec 585 if ffz > -2899 +ba dec -72 if ije <= -712 +ije dec 299 if bef <= -1931 +ax inc -390 if iw >= 3638 +bef inc 630 if ffz > -2889 +ije inc -324 if os != 379 +iw dec 144 if o > 1701 +py dec -99 if vg == 852 +ije dec -83 if os < 390 +iw dec 521 if os >= 381 +ba dec 862 if iz >= 368 +zrn inc -532 if zrn > 1933 +os dec 957 if os >= 387 +al dec -422 if odo <= -39 +p dec 89 if tsh < 2400 +ije dec 365 if znx > 2052 +j inc 147 if odo > -56 +qps dec -796 if app != -3015 +os dec -512 if kjt >= 1030 +sms inc 930 if os >= -59 +ije dec -752 if ije >= -1625 +sms dec -213 if ga == 1308 +ffz inc -497 if ax < 850 +cfl dec 838 if bef >= -1932 +p inc -261 if al >= -800 +py dec -592 if p >= 1753 +w inc 77 if zrn <= 1413 +ije inc 70 if bef > -1930 +p dec 533 if vg == 841 +vg dec -31 if sms >= -1745 +zrn dec -617 if zrn == 1410 +o dec 80 if iz >= 364 +zrn dec 145 if zrn <= 2028 +ga dec -736 if ga == 1308 +ax inc 117 if tsh <= 2405 +iz dec -347 if w >= -62 +ba dec 7 if os < -54 +py dec 756 if ba == -1465 +ba inc 534 if al >= -805 +j dec 19 if iw >= 2978 +iz dec -993 if ba == -923 +w inc -721 if cfl <= -1326 +sms dec -913 if ije <= -856 +bef inc -486 if w > -780 +ba inc 779 if iz < 376 +w dec 720 if bef < -1929 +iz dec -853 if p >= 1761 +cfl inc -529 if j <= -1203 +al inc 81 if ije >= -855 +w dec -750 if qps <= 2019 +py dec 378 if ffz == -3382 +sms inc -77 if p < 1762 +app inc 225 if sms <= -912 +kjt dec 114 if kjt >= 1032 +ga dec -190 if kjt == 921 +vg dec 844 if py == -2949 +iz dec 280 if ga >= 2228 +iw dec -789 if qps <= 2030 +ije dec -16 if ax >= 962 +ga inc 731 if bef >= -1935 +py inc -47 if sms <= -900 +al dec 121 if bef < -1928 +os dec -656 if ax == 963 +w dec 765 if o != 1621 +znx inc -559 if zrn <= 1884 +znx inc -829 if ba > -152 +tsh inc -207 if al <= -912 +qps dec -109 if os < 603 +p dec -915 if sms <= -910 +qps inc -381 if iw < 3757 +znx dec -805 if p < 1764 +ba inc 613 if tsh <= 2200 +znx dec 202 if o >= 1620 +sms dec -48 if app < -3015 +qps inc -977 if ije <= -845 +py dec -966 if qps < 1159 +p dec 656 if cfl > -1859 +ga inc -564 if p == 1103 +ga inc -301 if p > 1093 +ba dec -360 if app >= -3013 +zrn inc 266 if j < -1195 +ax inc 75 if tsh <= 2192 +iz dec 889 if znx != 2097 +j inc -217 if j >= -1210 +py inc -226 if os != 600 +app dec 326 if bef >= -1935 +ga inc -810 if kjt == 921 +kjt dec -500 if vg >= 25 +cfl inc -954 if ije < -848 +al dec -986 if w > -2283 +odo inc 260 if tsh < 2195 +odo inc 37 if os == 600 +py inc 787 if ffz == -3394 +p inc -586 if ffz >= -3391 +o inc 721 if o < 1630 +iz inc -556 if al != 66 +vg dec 880 if al != 69 +p inc -541 if qps == 1154 +iw inc -735 if zrn > 2147 +znx inc -373 if app == -3350 +cfl dec 541 if ba <= 466 +w inc -849 if ije == -849 +os dec -848 if sms < -865 +p dec 354 if j < -1416 +qps dec 706 if al <= 68 +ije inc -962 if al > 57 +ga dec -918 if vg > -858 +qps dec 584 if w > -3124 +kjt dec 215 if cfl > -3362 +sms inc -518 if tsh <= 2199 +j dec 655 if ba > 452 +ba inc -531 if app != -3340 +cfl inc -117 if znx <= 2101 +ba inc -939 if zrn >= 2149 +iz dec -954 if ffz <= -3391 +iw dec 863 if sms != -1384 +al dec -333 if j > -2078 +sms inc 906 if odo >= 244 +tsh dec -971 if j <= -2068 +py inc -848 if iz == 484 +py inc -803 if iz != 477 +ije dec 204 if ba != -71 +vg inc -360 if ffz > -3394 +ga dec -14 if iw != 2168 +w dec -28 if j != -2077 +zrn dec 947 if tsh == 3162 +tsh dec -21 if ba != -78 +o dec -376 if bef > -1936 +os dec 78 if odo > 253 +bef dec -582 if os == 610 +py dec 609 if bef == -1935 +ax inc 803 if ga > 2199 +w inc -397 if bef == -1935 +iz inc 898 if al > 401 +iw inc -309 if ga <= 2198 +ba dec -142 if app != -3345 +p dec 489 if w == -3490 +znx dec -777 if py != -4290 +odo inc 416 if ga < 2212 +tsh inc -779 if ffz > -3396 +bef dec -696 if o != 2714 +o dec -526 if odo > 667 +bef inc -491 if bef <= -1232 +j inc 258 if qps >= -144 +qps dec -286 if iw >= 2165 +ax inc 230 if app <= -3352 +ax dec 714 if w != -3501 +o dec -239 if ax <= 1130 +qps dec -55 if bef != -1730 +znx inc 847 if ba == 72 +vg dec 465 if cfl >= -3478 +kjt inc 821 if os >= 599 +cfl inc 365 if w != -3484 +sms inc 918 if py != -4295 +ax dec -123 if sms <= 447 +odo inc -544 if qps != 147 +iw inc 733 if iw < 2171 +ffz inc 679 if p != 216 +ba dec 383 if app != -3347 +zrn dec -22 if ffz != -2720 +tsh dec -425 if vg > -1678 +znx inc -427 if ffz < -2703 +j inc 971 if iw >= 2900 +o dec -26 if o != 2958 +ffz dec -282 if ba <= -302 +ga dec -709 if cfl >= -3095 +p inc 57 if kjt <= 2028 +odo dec 828 if w <= -3496 +j dec -812 if al > 393 +kjt inc -851 if znx != 2524 +ba dec 575 if odo >= 118 +ba dec 191 if ga < 2209 +ffz inc 384 if w >= -3496 +ga inc 764 if zrn > 1221 +ga dec -827 if ba > -1082 +ffz inc 240 if sms == 445 +vg inc -398 if qps > 153 +vg dec 713 if w <= -3484 +ga dec -695 if iz < 492 +zrn dec 358 if sms <= 449 +os inc -983 if qps >= 141 +py inc -834 if iz <= 492 +znx inc -822 if ax <= 1251 +kjt dec -138 if kjt != 1169 +os dec -304 if iz < 487 +py inc -924 if j == -24 +j inc -100 if o >= 2962 +ffz dec -645 if bef <= -1727 +os dec 416 if ffz < -1152 +ije dec 309 if w <= -3487 +ga dec -147 if iz != 480 +py dec 639 if zrn == 865 +py dec 15 if sms > 440 +p inc 746 if qps != 156 +al dec 202 if znx >= 1689 +bef dec -768 if app <= -3343 +zrn inc 425 if o != 2958 +qps inc 988 if zrn == 865 +j dec -50 if iz > 491 +iw inc 711 if ije <= -2331 +znx inc -936 if zrn == 865 +iz dec -253 if cfl <= -3097 +sms inc 319 if al <= 205 +os inc -922 if w != -3489 +qps dec -156 if cfl >= -3110 +ba dec -159 if kjt <= 1322 +iz dec -977 if qps != 1294 +iw inc 914 if p <= 1020 +odo dec 195 if ffz != -1163 +w inc -169 if znx != 769 +j dec -782 if kjt != 1310 +zrn inc -746 if ije <= -2317 +ga dec 819 if ffz > -1171 +qps dec -897 if kjt >= 1309 +ga inc -267 if o <= 2966 +znx inc 35 if py >= -5786 +qps inc -963 if py < -5774 +app inc 765 if vg <= -2382 +w inc 738 if znx > 802 +app dec 80 if al >= 188 +sms dec 799 if tsh != 2819 +tsh inc -853 if qps >= 1223 +ax dec 442 if vg > -2399 +qps dec -341 if zrn >= 115 +odo dec -166 if znx <= 801 +iz dec -254 if w <= -3662 +app inc 662 if sms == -35 +zrn inc 982 if ax <= 810 +o inc -671 if kjt > 1309 +iz dec 496 if iw != 3805 +iw dec -840 if iw > 3808 +ba dec -692 if qps >= 1565 +j dec -601 if qps != 1561 +cfl dec -861 if znx >= 793 +app dec -928 if ije == -2324 +iz inc -535 if j > 1353 +vg inc -367 if app < -1082 +al inc -788 if sms != -30 +ffz dec 398 if znx <= 786 +w inc -881 if tsh == 1976 +vg dec 711 if al > -594 +w dec -509 if odo == 88 +cfl dec 360 if cfl > -2253 +kjt inc 505 if znx >= 793 +bef inc -468 if py == -5778 +j dec -653 if zrn <= 1104 +vg inc -674 if os < -1424 +odo dec 283 if ba == -226 +ga inc 227 if ffz == -1162 +ije dec 276 if vg >= -3097 +j inc -159 if ffz >= -1164 +p dec 857 if ax >= 802 +tsh inc 519 if os <= -1414 +ga dec -54 if ba != -219 +ije dec 821 if w != -4543 +qps dec -704 if j >= 1841 +cfl inc -392 if ga >= 3843 +qps dec 156 if iw < 4656 +iw dec 505 if cfl != -2604 +o dec -98 if al < -588 +sms inc 277 if tsh != 2500 +py dec -874 if ba <= -220 +sms inc 102 if kjt >= 1818 +bef inc -577 if ga >= 3833 +app inc -285 if kjt != 1819 +app dec -776 if odo == -191 +ije inc 796 if py >= -4913 +znx inc -883 if iz >= 237 +vg inc 692 if vg <= -3098 +sms inc -100 if ga == 3836 +p dec 520 if tsh > 2497 +vg dec 275 if vg >= -2402 +zrn dec 418 if odo < -187 +w dec -313 if znx == -89 +o dec 705 if p < 155 +w inc 11 if qps >= 2112 +ffz inc -104 if os >= -1424 +sms inc 365 if ax > 798 +qps inc -865 if kjt > 1824 +ax dec 897 if vg == -2408 +ba dec -391 if bef <= -2004 +os dec 36 if os >= -1413 +o inc 580 if tsh >= 2487 +iz dec 475 if sms < 613 +app inc 382 if ffz >= -1262 +bef dec -763 if o <= 2267 +vg inc 387 if sms < 604 +os inc -441 if qps != 2123 +o inc -84 if iz > -239 +iz dec -82 if app < -307 +j inc 937 if vg < -2402 +vg dec 726 if os > -1856 +ga inc -739 if ffz == -1266 +zrn dec -721 if odo != -199 +py inc -154 if p == 154 +al inc 482 if al < -587 +znx inc 967 if vg >= -2409 +j inc 991 if py != -5063 +kjt dec -438 if p <= 159 +odo dec -308 if os >= -1854 +w dec 943 if zrn == 1404 +iz dec -855 if py == -5058 +cfl inc -45 if qps < 2126 +zrn dec -993 if qps > 2126 +qps dec -567 if ije == -2349 +kjt inc 848 if iz <= 621 +ffz inc -194 if ffz < -1261 +iz inc 172 if znx >= 869 +kjt dec -138 if ba <= 162 +app inc -4 if zrn > 1396 +ga inc -607 if tsh != 2493 +sms dec -300 if w > -5169 +ba dec -147 if ba != 166 +ffz dec -962 if app == -302 +os inc -626 if iw > 4155 +znx inc 235 if znx == 878 +bef inc -995 if zrn >= 1404 +ba dec -197 if ga < 2500 +tsh dec 592 if sms >= 905 +ax inc 300 if zrn != 1404 +sms dec -910 if bef > -2248 +zrn inc -350 if p != 164 +iw dec 225 if o != 2176 +p inc 856 if bef != -2239 +ije dec -673 if w == -5169 +znx inc -24 if ba > 499 +ga inc 858 if znx > 1080 +o dec 751 if tsh != 1909 +kjt dec -860 if vg == -2407 +znx inc 506 if iw > 4146 +os dec -434 if ba != 505 +kjt dec 644 if odo <= -182 +zrn inc 674 if ba >= 501 +ga dec -966 if j != 3773 +ije dec -182 if al == -110 +ba inc 967 if vg > -2401 +znx dec -527 if j >= 3765 +qps dec 176 if sms >= 1818 +p inc -817 if al < -100 +ffz dec -232 if odo < -188 +app dec -538 if w <= -5155 +ffz dec -702 if odo < -200 +qps dec -196 if ax >= -96 +ga inc -534 if sms <= 1811 +ije dec -525 if ga == 4314 +bef dec 105 if py >= -5061 +ga inc -485 if al < -111 +app inc -461 if ax < -80 +qps dec -482 if sms > 1818 +al dec 968 if cfl >= -2654 +ije inc 750 if p != -663 +odo dec 207 if cfl < -2647 +al inc 733 if w == -5160 +o inc 211 if ga <= 4310 +j inc 110 if py >= -5056 +al inc 777 if tsh < 1909 +zrn dec 851 if tsh == 1903 +odo dec -241 if j <= 3772 +qps inc 285 if znx <= 2117 +os dec 547 if znx > 2114 +o inc -650 if w > -5156 +p inc 264 if py > -5061 +sms inc -850 if j != 3763 +znx dec -405 if iw != 4157 +kjt dec -927 if qps == 3186 +al dec 119 if ga < 4320 +j dec -862 if qps > 3176 +ba dec 166 if tsh >= 1900 +ba inc -622 if qps != 3186 +w inc -777 if w != -5160 +j inc -860 if ba < 346 +znx dec 798 if iw > 4149 +cfl dec 218 if bef <= -2339 +al inc -504 if tsh == 1903 +qps dec -646 if ax > -90 +ffz dec -687 if ffz <= -261 +qps inc -602 if o < 1435 +w inc 358 if sms != 969 +o inc -941 if p == -399 +znx dec -32 if app == -225 +qps inc -356 if znx > 1758 +j inc 287 if iw > 4145 +kjt inc -18 if zrn >= 870 +sms inc -917 if kjt > 3369 +o dec 173 if w > -5170 +app inc -144 if tsh <= 1909 +bef inc 105 if ba > 334 +tsh dec 855 if app > -370 +iw dec -504 if sms < 46 +iw dec 666 if os < -1969 +vg dec -61 if o > 308 +ffz dec -73 if qps != 2872 +iz inc -498 if kjt != 3367 +ije dec 53 if p >= -400 +py inc -955 if znx < 1770 +p inc -282 if j == 4060 +cfl dec 237 if os <= -1967 +app dec 203 if o > 317 +o inc -201 if w == -5160 +iw dec 234 if zrn <= 883 +ije inc 493 if al > -193 +w dec 971 if qps == 2874 +app dec -415 if qps >= 2870 +app inc -775 if al <= -187 +j dec -878 if iz == 295 +w inc 15 if ax != -99 +vg inc 317 if qps == 2874 +o dec 26 if ga < 4315 +cfl dec -200 if ba > 336 +iw dec 741 if app == -729 +znx inc -134 if znx >= 1754 +iw dec 464 if zrn == 877 +tsh inc -908 if bef == -2239 +j inc 202 if cfl > -2907 +app inc 0 if znx != 1627 +py dec 414 if iz >= 287 +qps inc -384 if app > -732 +sms dec 915 if ba == 343 +iz dec 797 if tsh <= 141 +iw inc -909 if bef < -2235 +odo dec -300 if os > -1966 +ax inc 829 if iz < -498 +qps dec -169 if al <= -191 +o dec -464 if tsh < 148 +bef dec 312 if al > -201 +w dec -299 if iw >= 1146 +ffz dec -37 if w <= -6119 +bef inc 169 if bef == -2551 +cfl inc -364 if py >= -6427 +ffz dec -199 if ije >= -1197 +qps dec -287 if znx != 1634 +ba inc 108 if ije > -1208 +znx dec -765 if w > -6111 +j inc -138 if ax <= 744 +iz inc -26 if znx >= 1627 +qps inc -397 if py == -6427 +ffz dec -550 if al == -191 +kjt inc 776 if w >= -6116 +ba dec 743 if w > -6123 +ax inc -644 if al < -188 +cfl inc -824 if app <= -732 +odo inc -830 if odo >= -147 +znx dec 52 if ffz < 1049 +j inc -576 if znx < 1582 +odo dec -58 if ax != 96 +j dec 212 if tsh != 143 +kjt dec 980 if j >= 4205 +odo inc -463 if zrn != 877 +ga inc 607 if o >= 548 +ax inc -946 if o <= 542 +ga inc 715 if p <= -678 +py inc -549 if odo >= -163 +vg inc -148 if iw <= 1141 +py inc -633 if py != -6978 +w inc 71 if kjt <= 3168 +iw dec -433 if zrn < 880 +iw inc 280 if bef > -2391 +app inc 453 if os == -1971 +j inc 137 if vg == -2178 +ba inc 680 if ffz >= 1037 +ga inc -233 if odo <= -150 +ba dec -122 if o <= 549 +ga dec -169 if znx > 1570 +zrn inc -252 if p >= -687 +p dec -129 if znx == 1575 +py dec -547 if iz > -522 +iw dec -796 if ba > 506 +tsh inc -179 if vg < -2170 +iw inc -650 if sms == -863 +ffz inc -768 if ije < -1192 +j inc -324 if iz > -530 +o dec -37 if ije >= -1208 +bef dec 76 if ga == 5568 +tsh inc -287 if app >= -285 +qps inc -132 if znx < 1583 +tsh dec -12 if vg >= -2181 +ije dec -394 if py >= -7612 +ba dec -39 if p != -557 +zrn inc -728 if o > 578 +ije inc -468 if j == 4027 +o inc 414 if odo != -164 +app dec -601 if j != 4024 +iz dec -203 if znx >= 1572 +iw dec -785 if app == 325 +zrn inc 987 if vg < -2177 +bef dec -158 if w == -6045 +ffz inc -535 if sms >= -872 +al inc -992 if o <= 1002 +tsh inc 575 if j != 4019 +qps inc -85 if vg == -2178 +py dec 235 if w == -6045 +sms dec -882 if j != 4025 +iz inc -869 if ba != 548 +ga dec -964 if ax < 89 +ffz dec 758 if ga <= 5580 +kjt dec -48 if tsh >= 263 +ga dec 807 if py < -7838 +bef dec -763 if p < -546 +py dec -648 if o > 990 +vg dec 456 if al <= -1188 +odo dec -95 if app != 318 +bef dec -7 if cfl <= -3277 +vg dec 343 if zrn <= 890 +cfl inc 273 if qps >= 2326 +j dec -459 if ije >= -1284 +py dec 210 if ije >= -1283 +zrn dec 527 if ax > 88 +al inc -14 if odo > -65 +al dec -358 if bef < -1455 +cfl inc -83 if ax >= 89 +j dec -690 if sms <= 25 +py dec -752 if znx > 1574 +kjt dec 609 if tsh >= 261 +ba dec -362 if bef != -1461 +sms inc 468 if iz < -1193 +ije dec 85 if qps > 2324 +ax inc -763 if app == 325 +o inc 681 if w == -6045 +ba inc -963 if cfl == -3077 +ffz inc -945 if py >= -6659 +j dec 224 if o != 1674 +o inc 227 if py >= -6654 +znx inc 717 if ffz != -1952 +ba inc 787 if ga < 4763 +iw inc -248 if bef == -1461 +tsh dec 29 if cfl <= -3074 +ga dec 968 if py <= -6649 +iz dec 420 if ffz <= -1955 +sms dec 27 if o < 1910 +cfl inc 23 if bef <= -1459 +ga inc 20 if zrn > 348 +j dec 385 if iz > -1617 +tsh inc -305 if p <= -549 +iz inc 53 if j >= 4561 +w dec -261 if sms < 465 +al dec 887 if iz < -1558 +w inc -131 if os != -1973 +ffz inc -220 if py >= -6651 +al inc -746 if app != 325 +ba inc -488 if ffz == -1962 +vg inc -694 if py > -6655 +qps inc -647 if iw <= 2538 +w dec -514 if bef <= -1455 +py dec 529 if py != -6654 +tsh dec 720 if tsh != -74 +ba inc -466 if os != -1972 +ga inc 662 if w <= -5402 +sms dec 356 if ije < -1353 +al dec -62 if app < 328 +bef dec -381 if app > 320 +zrn inc 106 if vg <= -3216 +kjt dec 925 if py > -6646 +cfl inc 699 if w <= -5399 +iw inc 549 if ga > 3824 +iz inc 653 if zrn < 356 +ba dec 674 if ije <= -1362 +zrn inc -255 if ba < -1363 +ax dec 329 if ga <= 3826 diff --git a/src/2018/day8/README.md b/src/2018/day8/README.md new file mode 100644 index 0000000..f486d0f --- /dev/null +++ b/src/2018/day8/README.md @@ -0,0 +1,37 @@ +--- Day 8: Memory Maneuver --- + +The sleigh is much easier to pull than you'd expect for something its weight. Unfortunately, neither you nor the Elves know which way the North Pole is from here. + +You check your wrist device for anything that might help. It seems to have some kind of navigation system! Activating the navigation system produces more bad news: "Failed to start navigation system. Could not read software license file." + +The navigation system's license file consists of a list of numbers (your puzzle input). The numbers define a data structure which, when processed, produces some kind of tree that can be used to calculate the license number. + +The tree is made up of nodes; a single, outermost node forms the tree's root, and it contains all other nodes in the tree (or contains nodes that contain nodes, and so on). + +Specifically, a node consists of: + + A header, which is always exactly two numbers: + The quantity of child nodes. + The quantity of metadata entries. + Zero or more child nodes (as specified in the header). + One or more metadata entries (as specified in the header). + +Each child node is itself a node that has its own header, child nodes, and metadata. For example: + +2 3 0 3 10 11 12 1 1 0 1 99 2 1 1 2 +A---------------------------------- + B----------- C----------- + D----- + +In this example, each node of the tree is also marked with an underline starting with a letter for easier identification. In it, there are four nodes: + + A, which has 2 child nodes (B, C) and 3 metadata entries (1, 1, 2). + B, which has 0 child nodes and 3 metadata entries (10, 11, 12). + C, which has 1 child node (D) and 1 metadata entry (2). + D, which has 0 child nodes and 1 metadata entry (99). + +The first check done on the license file is to simply add up all of the metadata entries. In this example, that sum is 1+1+2+10+11+12+2+99=138. + +What is the sum of all metadata entries? + + diff --git a/src/2018/day8/aoc.cpp b/src/2018/day8/aoc.cpp new file mode 100644 index 0000000..585f144 --- /dev/null +++ b/src/2018/day8/aoc.cpp @@ -0,0 +1,5 @@ +#include "aoc.h" + +namespace aoc2018 { + +} diff --git a/src/2018/day8/aoc.h b/src/2018/day8/aoc.h new file mode 100644 index 0000000..4bfdbf3 --- /dev/null +++ b/src/2018/day8/aoc.h @@ -0,0 +1,6 @@ +#pragma once +#include "common.h" + +namespace aoc2018 { + +} diff --git a/src/2018/day8/input b/src/2018/day8/input new file mode 100644 index 0000000..b7abb41 --- /dev/null +++ b/src/2018/day8/input @@ -0,0 +1 @@ +7 11 7 2 5 5 3 5 1 8 0 7 7 1 2 3 5 6 5 1 2 1 1 2 2 3 2 1 9 0 7 1 9 2 5 7 1 2 2 1 2 2 3 2 1 3 3 1 6 0 7 1 9 4 7 7 6 4 1 2 1 2 3 1 3 2 1 4 4 3 4 1 9 0 11 4 6 5 4 3 2 5 7 5 1 1 2 1 3 1 2 3 3 3 2 1 8 0 6 9 2 5 5 3 1 1 2 1 3 2 3 2 1 1 6 0 6 6 4 4 4 4 1 2 3 1 3 2 3 5 2 3 2 3 5 1 6 0 10 9 3 3 6 8 1 4 5 8 3 2 2 3 1 1 3 1 9 0 9 7 9 1 8 9 1 2 1 4 2 3 1 1 1 3 1 2 1 1 7 0 11 8 6 4 3 5 9 7 7 9 1 6 2 3 1 1 1 2 2 4 4 3 3 3 3 4 1 9 0 10 8 1 2 3 3 8 9 4 8 4 2 2 1 1 2 1 1 3 3 1 5 0 9 2 1 8 3 6 1 9 6 4 3 1 1 1 3 1 7 0 9 1 2 3 6 1 3 9 3 2 1 1 3 2 2 2 2 4 1 1 1 3 6 1 5 0 6 6 8 7 1 6 8 1 1 1 2 3 1 6 0 6 5 2 4 1 5 7 3 1 1 1 2 1 1 7 0 6 7 6 5 1 1 1 1 1 1 2 1 1 2 4 1 2 4 2 4 7 1 5 4 3 5 5 3 4 1 7 0 11 5 2 3 8 1 8 1 6 6 1 4 1 2 1 1 2 2 3 1 6 0 6 5 9 5 6 4 1 1 2 2 2 1 2 1 5 0 6 1 4 7 9 6 1 1 1 2 3 3 1 3 5 3 3 5 1 8 0 9 1 7 5 1 7 5 2 6 2 1 1 3 2 1 3 1 1 1 6 0 7 7 8 4 5 7 1 1 3 1 1 2 3 1 1 9 0 7 5 8 6 1 4 5 4 1 2 3 2 2 1 1 1 1 5 2 5 4 2 3 5 1 8 0 7 4 9 1 4 2 1 7 1 3 1 1 1 3 1 3 1 5 0 10 5 9 4 1 1 2 2 2 1 1 2 1 2 3 1 1 8 0 10 5 6 1 8 2 4 1 2 8 1 3 2 3 1 1 3 2 2 4 4 2 4 2 3 5 1 5 0 7 7 3 4 1 6 1 3 2 2 1 2 1 1 7 0 10 8 1 9 1 4 9 9 6 3 1 3 1 3 2 3 1 3 1 8 0 7 9 4 2 9 1 3 6 2 3 3 1 3 1 1 1 3 2 5 5 1 3 7 1 8 0 8 9 8 1 2 9 3 5 2 1 3 1 1 3 1 1 3 1 8 0 10 8 3 9 3 8 8 3 8 1 4 2 2 2 2 1 2 2 1 1 5 0 10 3 4 7 1 8 9 8 2 8 4 3 1 2 1 3 5 2 4 1 5 1 2 2 5 1 1 4 5 4 3 6 1 7 0 9 7 4 1 2 8 6 1 5 2 1 1 3 3 1 3 1 1 7 0 6 4 1 2 6 3 7 1 1 1 1 3 3 3 1 7 0 6 7 6 1 4 1 7 1 1 3 1 2 2 1 5 5 1 1 5 2 3 4 1 7 0 10 9 8 4 9 1 2 2 2 8 1 3 3 3 1 1 1 3 1 5 0 7 5 7 1 4 9 4 7 1 1 1 3 3 1 5 0 9 7 5 7 3 8 9 1 3 1 2 1 1 2 3 5 2 2 3 3 4 1 7 0 6 1 8 5 3 8 1 3 1 3 3 1 3 1 1 9 0 11 6 6 2 9 4 5 4 5 4 1 9 1 3 2 1 2 3 3 1 1 1 5 0 11 5 8 1 7 1 7 6 2 2 2 8 2 2 2 1 3 3 1 2 2 3 4 1 7 0 7 1 5 9 1 4 2 6 1 3 2 3 2 1 2 1 8 0 7 3 1 4 6 9 8 2 3 2 2 2 2 1 3 1 1 7 0 8 7 1 1 8 8 2 2 2 2 2 1 2 1 1 1 4 1 2 1 3 4 1 8 0 8 2 1 6 6 6 4 5 5 2 2 3 2 2 1 1 3 1 9 0 6 1 5 1 8 7 6 1 3 3 1 3 3 3 1 2 1 5 0 10 6 6 1 4 1 7 1 8 1 9 3 1 2 3 2 2 1 1 5 7 6 5 3 5 4 3 7 1 8 0 9 9 2 5 8 5 1 1 2 3 2 2 2 2 1 1 2 1 1 9 0 11 8 1 9 8 8 7 1 5 9 1 9 3 1 3 3 3 3 1 2 2 1 6 0 11 3 9 4 1 5 1 7 7 7 3 2 1 3 2 1 2 3 1 1 4 1 3 1 3 3 5 1 7 0 8 1 5 4 5 1 2 6 9 2 2 2 3 1 1 2 1 6 0 8 1 2 8 7 9 6 7 3 2 1 1 3 2 3 1 6 0 8 6 9 8 3 5 3 4 1 1 3 2 3 1 1 5 1 3 4 5 3 5 1 9 0 10 3 1 7 4 9 1 3 5 3 5 1 1 3 1 3 3 1 2 3 1 6 0 7 4 1 5 6 5 1 2 1 3 3 3 1 3 1 8 0 6 3 6 2 9 1 6 1 2 1 3 2 2 3 1 4 2 1 3 2 3 4 1 6 0 11 4 8 4 8 3 2 1 8 3 5 5 2 1 2 3 1 1 1 8 0 10 8 8 9 7 5 2 4 1 9 8 2 3 2 2 2 3 3 1 1 7 0 7 3 7 6 1 7 6 1 2 2 3 1 2 1 2 5 5 1 5 3 7 1 5 0 7 7 2 1 1 9 3 3 3 1 3 1 1 1 8 0 9 2 7 3 1 7 7 5 8 5 1 1 2 2 3 3 1 3 1 5 0 9 1 6 1 4 8 9 9 1 8 1 2 2 3 1 2 4 3 4 5 4 1 1 4 4 5 5 4 3 5 1 5 0 9 8 5 5 8 8 6 8 1 5 1 1 1 2 2 1 7 0 7 5 8 2 9 1 1 2 1 2 3 1 2 2 3 1 8 0 10 1 1 3 2 3 6 1 5 8 3 1 3 1 1 2 1 2 2 1 3 4 1 3 3 6 1 6 0 8 4 9 5 3 7 1 7 4 1 1 1 1 2 3 1 9 0 8 7 1 8 7 5 6 7 4 2 2 1 3 1 3 1 2 1 1 6 0 10 7 9 4 7 1 2 2 1 8 2 2 2 1 3 3 1 3 5 3 1 1 2 3 4 1 6 0 11 2 1 9 8 9 5 9 2 9 8 4 1 3 1 2 3 1 1 7 0 8 5 1 4 4 7 1 3 9 2 1 1 2 3 1 3 1 9 0 9 9 2 1 1 2 8 4 4 3 2 2 2 3 3 2 2 1 3 4 5 5 3 3 5 1 9 0 9 1 2 1 2 3 7 5 5 3 2 2 2 2 3 2 3 1 2 1 6 0 6 8 2 6 2 1 8 1 3 1 3 1 1 1 8 0 8 6 9 3 1 1 3 8 6 2 2 2 3 1 1 2 1 1 4 2 3 2 3 5 1 6 0 9 9 1 6 3 4 2 8 8 4 1 1 2 3 1 3 1 7 0 6 4 7 3 1 7 5 2 2 1 3 3 2 2 1 8 0 7 4 9 6 8 1 1 1 1 3 1 1 2 2 1 3 2 1 2 4 1 2 1 4 6 5 4 3 5 1 9 0 6 3 1 1 2 9 8 3 1 2 2 3 1 1 3 1 1 8 0 6 7 1 2 4 4 2 2 1 2 3 2 1 2 2 1 7 0 9 7 9 1 7 6 1 8 2 6 2 2 2 2 2 3 1 2 5 1 4 1 3 7 1 7 0 10 5 2 1 5 4 3 3 8 1 5 3 1 1 1 3 1 2 1 9 0 11 3 4 4 9 8 5 4 7 4 1 3 2 2 1 2 3 3 2 2 1 1 6 0 7 4 6 8 1 1 3 2 1 2 2 1 1 1 2 2 5 1 5 3 1 3 7 1 9 0 9 9 4 7 2 1 1 9 8 3 1 3 2 1 3 3 1 1 3 1 8 0 8 2 8 9 1 4 9 3 6 3 1 2 2 1 3 1 1 1 5 0 9 9 1 2 7 1 2 1 8 8 2 1 2 1 2 5 5 4 5 3 2 2 3 6 1 8 0 8 2 2 1 3 6 5 7 4 1 1 3 3 2 1 3 3 1 9 0 9 3 5 8 1 1 9 9 3 9 2 2 1 1 3 2 1 1 2 1 5 0 8 7 9 1 6 3 5 5 9 2 2 3 1 3 4 1 1 1 4 3 3 4 1 5 0 7 4 9 6 1 9 2 1 3 2 3 1 2 1 9 0 10 1 6 4 5 2 9 1 8 5 4 2 1 3 2 2 1 3 1 1 1 5 0 7 9 7 2 8 7 1 2 2 1 3 1 1 2 3 2 4 5 3 5 5 5 3 3 6 1 7 0 8 1 7 3 1 5 7 7 6 1 3 2 1 1 3 2 1 9 0 7 1 5 9 9 1 5 8 3 2 3 2 1 3 3 3 3 1 9 0 6 1 1 6 1 3 6 1 1 3 1 1 2 1 1 3 3 5 3 2 2 3 3 5 1 6 0 7 6 4 3 3 1 9 3 3 1 3 1 1 2 1 9 0 11 3 6 7 2 6 6 1 3 8 1 6 1 3 1 3 1 3 1 3 1 1 5 0 7 5 7 1 1 3 4 7 3 1 2 1 2 4 5 1 2 2 3 7 1 7 0 8 1 4 1 5 3 5 1 1 2 1 3 1 1 1 2 1 9 0 6 8 1 3 9 1 4 1 3 2 3 3 2 1 1 2 1 7 0 6 3 3 1 5 8 3 3 3 1 1 3 3 1 2 4 2 3 3 3 4 3 7 1 7 0 7 3 9 1 9 9 6 9 3 1 3 3 2 1 3 1 6 0 11 4 9 4 4 1 1 2 9 1 2 9 2 1 1 3 3 3 1 6 0 10 1 7 7 5 2 7 8 1 4 8 1 1 3 3 1 3 5 3 2 3 2 5 3 3 5 1 8 0 9 5 7 8 2 2 5 5 1 9 2 2 3 1 3 3 2 1 1 8 0 7 8 5 9 1 2 6 2 2 1 2 2 1 2 2 1 1 5 0 11 2 6 2 7 1 4 3 6 9 1 8 1 1 1 1 1 1 2 1 2 3 4 5 2 7 3 6 2 5 3 3 5 1 7 0 6 4 1 3 7 3 4 1 2 1 1 1 3 1 1 7 0 7 4 7 5 2 4 5 1 3 1 3 3 3 1 2 1 6 0 7 1 1 1 9 6 8 4 1 1 2 2 2 3 1 2 3 3 2 3 6 1 6 0 6 1 9 6 9 4 3 3 1 3 3 3 1 1 8 0 8 9 7 3 1 4 4 6 9 1 1 1 2 3 1 3 3 1 8 0 10 1 2 5 8 9 3 1 8 1 4 3 1 3 1 1 2 2 2 1 1 3 3 2 5 3 4 1 8 0 8 7 7 6 9 3 1 6 4 2 2 3 1 2 1 1 2 1 6 0 10 5 7 9 6 1 9 8 6 1 5 1 1 1 1 3 3 1 7 0 9 1 6 6 5 9 8 1 3 2 2 2 1 1 3 2 3 1 1 4 5 3 5 1 7 0 7 4 8 1 7 7 2 8 3 3 1 3 3 2 3 1 6 0 9 4 1 8 1 4 9 3 4 9 2 1 1 3 3 1 1 8 0 7 7 7 8 1 9 1 2 3 1 1 3 1 3 1 3 1 4 5 4 5 3 7 1 6 0 7 2 8 1 4 4 6 7 1 1 1 3 2 3 1 8 0 7 1 1 8 6 4 9 6 3 2 1 1 2 1 1 1 1 6 0 10 8 6 1 8 6 1 1 3 7 8 3 3 3 1 2 1 4 2 4 2 1 1 1 5 5 1 4 5 3 7 1 6 0 10 5 1 5 6 1 4 3 7 8 8 3 2 1 1 2 2 1 8 0 9 7 9 9 1 2 1 2 1 7 3 1 3 1 2 1 2 3 1 9 0 8 1 2 6 4 4 7 8 6 3 2 1 3 3 2 3 1 3 4 4 1 3 3 3 1 3 7 1 7 0 10 7 2 4 1 8 6 5 5 2 1 1 1 2 3 1 3 1 1 7 0 10 9 5 8 1 6 1 6 1 5 2 3 2 2 3 2 1 2 1 8 0 9 2 1 8 7 8 6 7 2 2 3 1 1 2 3 3 1 1 3 2 5 2 2 3 1 3 4 1 9 0 11 2 5 7 4 3 5 1 4 8 1 7 2 2 1 2 2 1 1 1 2 1 6 0 8 6 2 2 1 4 7 8 9 1 2 1 1 2 1 1 5 0 11 2 7 1 9 4 5 4 9 9 8 1 1 1 2 1 3 5 1 4 1 3 5 1 5 0 7 9 1 4 6 1 5 3 2 3 1 1 1 1 8 0 7 6 4 5 7 9 3 1 2 1 3 1 2 1 2 2 1 6 0 11 6 1 3 4 4 5 5 5 8 3 2 1 1 1 1 1 1 2 1 4 4 3 6 4 3 1 2 4 5 3 6 1 7 0 11 1 3 3 3 3 7 3 1 6 4 5 1 3 2 3 1 1 3 1 8 0 10 3 1 8 4 4 1 2 6 6 9 1 1 3 1 1 1 1 1 1 6 0 11 4 1 8 4 1 4 7 4 1 9 8 1 1 3 3 3 1 1 3 3 4 3 4 3 5 1 7 0 6 1 7 5 1 6 1 3 1 1 1 1 1 2 1 6 0 8 6 6 6 4 8 1 5 6 1 2 1 1 3 1 1 5 0 10 3 9 1 4 3 5 6 4 9 9 2 2 3 2 1 1 1 2 4 1 3 4 1 5 0 6 1 7 2 6 1 5 1 1 3 1 2 1 5 0 10 8 5 7 4 1 7 9 5 4 7 3 1 2 1 1 1 7 0 8 9 1 1 1 3 7 5 2 3 2 3 1 3 1 1 2 1 3 1 3 4 1 5 0 10 8 1 5 6 9 8 5 1 6 8 3 2 1 2 1 1 7 0 9 1 4 9 2 3 4 3 4 7 1 1 1 3 1 3 2 1 6 0 9 9 4 6 8 2 1 6 4 8 1 1 3 3 1 1 2 5 4 1 5 2 4 2 2 5 5 3 6 1 5 0 7 1 8 8 9 1 8 2 3 1 1 3 1 1 6 0 7 1 2 9 9 3 2 3 2 2 3 3 1 2 1 8 0 11 4 1 4 4 8 2 5 7 6 5 5 1 2 1 2 3 3 1 3 4 5 1 5 1 3 3 5 1 7 0 7 7 3 1 9 5 4 4 1 2 3 1 1 1 3 1 7 0 8 6 1 2 2 6 7 9 9 1 2 1 3 1 3 1 1 9 0 7 9 5 6 8 2 3 1 2 1 1 1 2 1 3 3 1 4 2 2 3 5 3 5 1 9 0 10 6 8 6 1 1 3 4 8 4 2 1 1 1 1 2 2 1 1 2 1 9 0 11 1 5 4 9 8 6 8 8 4 4 9 1 2 3 3 2 1 2 3 3 1 8 0 9 1 2 9 5 1 1 7 2 2 1 1 2 3 3 3 2 2 2 3 2 1 2 3 7 1 9 0 9 9 5 6 7 1 9 8 7 6 2 1 3 1 3 2 2 3 2 1 5 0 9 9 1 5 7 8 7 8 9 1 1 2 2 1 1 1 7 0 6 1 3 9 3 3 3 2 1 3 2 1 2 2 1 5 3 3 1 3 3 3 7 1 5 0 8 5 7 7 2 2 4 2 1 3 1 3 2 2 1 5 0 10 6 5 1 8 9 3 6 7 3 6 2 3 3 2 1 1 9 0 6 3 5 9 6 1 1 1 2 1 2 2 3 2 1 2 1 2 3 3 5 2 5 6 3 1 1 7 5 3 3 5 1 8 0 9 6 9 6 9 1 5 3 5 7 3 1 2 1 1 1 2 3 1 6 0 9 5 4 9 7 6 4 8 1 3 3 3 3 3 1 1 1 7 0 6 1 3 3 5 3 9 1 3 2 1 3 1 2 5 4 4 4 2 3 7 1 9 0 6 1 8 3 9 8 9 1 1 1 2 3 1 2 1 2 1 8 0 7 5 8 5 3 2 1 5 1 2 2 2 3 3 3 1 1 5 0 6 7 4 8 7 1 1 2 1 2 2 1 2 4 4 3 4 3 5 3 5 1 9 0 9 3 1 2 2 7 6 4 5 5 3 3 1 1 1 3 1 1 1 1 8 0 11 1 6 5 5 3 9 7 1 8 3 6 3 3 1 1 3 1 3 3 1 5 0 9 4 3 5 4 3 6 1 2 9 2 3 2 1 1 4 3 1 5 5 3 5 1 8 0 11 6 5 9 3 4 1 1 9 2 9 3 3 3 2 2 1 1 2 2 1 5 0 6 6 3 1 8 1 7 3 2 2 1 1 1 8 0 11 4 3 9 4 7 1 8 9 7 6 1 3 1 3 1 2 3 2 3 4 2 2 4 2 3 7 1 9 0 11 4 4 9 9 7 8 5 1 3 1 3 3 2 3 2 3 1 2 3 2 1 5 0 11 2 3 9 1 3 3 7 9 9 3 3 1 3 2 1 2 1 6 0 11 7 5 1 6 5 8 1 6 5 2 2 1 3 3 1 1 2 2 2 4 2 5 5 4 1 1 4 5 3 3 6 1 6 0 7 5 9 8 1 5 4 4 1 3 2 1 1 1 1 9 0 7 1 5 8 3 3 7 1 2 2 3 1 1 3 2 3 3 1 8 0 9 6 1 1 8 5 6 8 9 2 3 1 3 2 1 2 1 3 3 3 3 3 3 2 3 4 1 6 0 9 2 1 1 1 8 2 1 5 6 2 3 3 3 2 1 1 6 0 9 5 1 6 9 7 2 5 1 6 1 1 2 1 1 2 1 5 0 9 3 1 4 2 9 5 7 1 1 1 3 1 3 2 2 1 3 4 3 5 1 5 0 11 1 9 5 3 4 9 5 6 7 3 1 1 3 2 1 3 1 8 0 6 5 5 9 6 6 1 3 3 1 2 3 2 2 1 1 6 0 8 1 7 6 6 7 6 7 5 2 3 1 2 1 2 2 3 2 5 3 3 5 1 9 0 9 5 5 2 9 9 5 1 4 1 3 1 2 3 2 1 2 1 3 1 5 0 10 7 7 9 7 8 1 1 7 5 5 3 1 3 1 2 1 8 0 7 7 1 6 8 4 1 3 2 2 1 3 1 2 3 1 3 1 3 3 1 3 6 1 5 0 9 6 8 1 2 6 2 9 7 9 3 3 1 2 3 1 8 0 7 1 5 9 2 8 7 5 3 3 1 1 3 3 3 1 1 8 0 10 5 9 9 7 9 8 1 3 5 9 1 3 2 3 1 1 2 1 5 2 5 1 4 1 2 4 4 3 1 6 3 4 3 3 5 1 9 0 7 9 1 8 1 8 8 1 2 3 2 2 1 2 3 1 2 1 9 0 6 7 4 1 4 8 7 1 1 1 2 3 2 2 2 2 1 9 0 6 7 3 1 5 3 6 1 3 1 2 2 1 2 3 1 1 4 4 2 2 3 7 1 5 0 7 1 7 1 1 1 4 8 1 2 3 1 2 1 8 0 9 1 1 1 4 5 7 7 7 6 2 1 1 1 1 3 3 1 1 6 0 10 7 5 6 7 5 1 3 9 7 3 3 3 1 1 2 1 4 2 1 3 2 2 1 3 6 1 6 0 7 1 9 4 6 4 6 2 1 3 1 2 3 1 1 6 0 6 6 9 3 1 4 1 1 1 3 1 2 3 1 8 0 9 9 1 3 5 2 1 1 2 4 2 3 1 1 2 2 1 2 3 4 5 3 3 3 3 5 1 5 0 6 8 2 3 2 2 1 1 1 3 2 1 1 5 0 7 5 9 9 9 1 1 3 1 1 2 2 1 1 9 0 10 7 8 7 1 7 6 1 2 2 9 3 1 3 1 3 1 1 1 2 2 4 3 1 2 3 2 3 4 3 3 6 1 6 0 11 4 5 9 4 6 4 3 1 2 3 7 2 2 1 1 2 2 1 6 0 6 9 1 6 7 6 4 3 1 2 3 2 1 1 8 0 6 9 8 1 7 9 1 2 3 2 1 1 3 1 2 4 3 1 3 4 5 3 7 1 8 0 9 2 6 3 1 1 1 9 1 1 3 1 2 3 3 3 1 1 1 6 0 6 7 3 7 1 7 8 1 1 1 1 1 3 1 9 0 10 4 1 9 3 3 8 4 5 5 8 2 3 1 1 2 3 2 1 2 4 2 1 1 4 5 4 3 4 1 9 0 8 4 1 6 9 8 8 5 5 2 3 2 1 1 1 3 3 1 1 8 0 7 7 6 5 1 1 4 1 1 3 1 1 3 2 3 3 1 7 0 7 1 1 2 9 7 7 1 1 3 2 1 3 2 2 1 1 5 5 3 4 1 5 0 6 2 6 9 2 6 1 1 1 2 3 2 1 9 0 8 1 7 8 9 8 7 6 5 1 2 3 1 3 1 1 1 3 1 5 0 8 1 5 3 8 2 1 3 8 1 3 2 3 3 2 2 4 3 2 1 3 4 3 3 4 1 8 0 10 4 6 3 7 5 1 7 1 2 5 3 1 3 1 1 2 1 1 1 6 0 9 5 4 7 2 4 8 2 7 1 1 2 2 1 1 3 1 7 0 9 3 1 8 8 3 6 1 1 3 3 2 3 2 2 1 3 4 3 3 3 3 7 1 8 0 11 9 9 1 9 9 4 3 1 1 7 2 1 3 3 2 3 3 1 3 1 7 0 10 7 3 9 3 3 7 5 7 1 1 2 1 1 1 1 2 2 1 7 0 9 6 4 4 5 1 6 7 6 3 2 3 3 3 1 3 1 2 3 5 5 5 3 2 3 5 1 6 0 10 9 1 9 1 4 5 7 1 6 7 1 2 2 3 1 2 1 5 0 10 2 3 8 1 3 5 2 7 1 1 3 1 1 2 1 1 8 0 9 8 5 1 7 1 6 8 6 8 1 3 3 3 3 3 1 3 5 3 1 3 3 3 5 1 7 0 7 5 8 7 6 2 1 9 1 2 2 1 1 2 3 1 7 0 11 2 5 7 8 2 1 6 8 9 8 4 2 3 2 1 3 2 1 1 5 0 7 3 7 2 3 3 1 6 1 3 2 3 1 1 1 4 1 2 3 2 4 4 3 3 6 1 9 0 6 8 1 6 6 2 1 2 2 1 1 1 1 3 2 2 1 6 0 8 1 2 1 1 5 7 1 7 1 3 1 2 2 1 1 8 0 6 6 1 2 9 6 6 1 2 2 2 1 2 2 2 2 1 2 2 3 3 3 4 1 8 0 8 5 1 2 4 3 2 7 4 2 1 3 2 3 1 1 3 1 9 0 6 8 3 3 1 1 6 1 3 2 2 1 2 1 2 3 1 9 0 9 9 7 2 1 4 5 8 5 3 3 2 3 2 3 1 2 2 1 4 5 4 1 3 4 1 9 0 8 6 8 7 9 7 2 1 7 1 2 2 1 1 1 3 1 1 1 8 0 8 9 7 2 1 5 3 8 1 1 1 1 2 1 2 2 3 1 6 0 10 9 4 8 7 2 5 9 9 3 1 3 3 1 3 3 1 2 3 1 5 3 7 1 8 0 6 1 5 9 2 1 9 2 1 1 1 1 1 2 1 1 7 0 11 9 7 6 8 7 1 3 1 9 3 5 1 1 2 3 1 2 3 1 5 0 8 8 2 1 9 6 8 1 8 2 1 2 3 2 1 5 1 3 2 3 2 3 4 2 5 3 3 4 1 6 0 11 2 5 5 4 7 5 7 1 5 1 5 3 1 1 1 2 3 1 7 0 6 1 2 7 6 8 4 1 3 3 1 3 3 2 1 9 0 9 1 6 4 1 4 1 9 3 8 2 1 3 1 1 1 1 3 2 1 3 4 2 3 4 1 8 0 10 1 1 9 5 4 4 3 3 8 3 3 3 1 1 1 3 1 2 1 9 0 10 6 4 5 2 1 5 5 6 8 1 1 2 1 1 1 3 1 2 3 1 8 0 6 7 1 2 8 5 4 1 1 3 2 2 1 3 3 3 3 2 1 3 5 1 8 0 9 9 1 5 4 3 7 1 1 4 1 2 3 2 2 2 3 1 1 6 0 9 7 8 5 6 5 7 6 5 1 2 1 1 1 3 2 1 7 0 7 1 2 6 7 6 5 5 3 1 2 3 3 3 3 1 3 4 3 2 3 6 1 5 0 6 4 1 2 7 1 1 2 2 1 1 2 1 7 0 6 1 9 1 2 7 8 1 1 1 2 1 3 2 1 6 0 10 4 9 8 8 2 6 9 7 2 1 1 1 2 1 1 2 5 2 3 3 2 1 3 5 1 6 0 11 1 5 8 9 6 1 9 1 6 6 5 1 1 2 3 2 2 1 5 0 7 9 8 2 1 8 2 7 1 1 2 1 2 1 8 0 6 5 7 9 1 7 8 2 1 1 2 3 1 1 1 5 2 2 5 4 2 4 5 5 5 3 5 1 9 0 8 8 2 4 4 9 1 3 4 2 2 2 1 3 2 3 2 1 1 8 0 11 1 9 5 2 1 1 7 1 7 4 5 3 3 1 1 1 2 3 1 1 6 0 9 7 5 1 7 3 3 7 6 7 1 2 1 1 3 2 1 4 5 3 3 3 5 1 7 0 6 1 3 8 7 6 1 2 1 1 3 2 2 1 1 5 0 9 7 4 1 3 8 5 1 2 8 2 2 1 1 3 1 8 0 11 6 3 4 4 8 4 6 6 1 6 1 3 3 3 2 1 3 2 1 3 1 4 2 2 3 6 1 6 0 10 1 7 7 6 6 6 1 6 4 3 1 3 2 1 2 1 1 7 0 11 5 5 8 2 9 5 3 1 7 9 2 1 1 3 3 2 2 1 1 9 0 7 5 1 6 4 3 3 2 1 2 3 2 1 3 1 2 3 4 2 5 1 2 2 3 5 1 5 0 9 3 5 1 5 9 4 1 2 4 3 1 1 3 2 1 6 0 9 8 3 1 9 5 6 4 7 5 1 2 1 3 2 1 1 7 0 9 6 1 7 7 3 4 5 2 1 3 2 1 1 1 2 1 4 1 1 5 2 3 5 1 5 0 7 5 1 4 6 1 9 2 3 1 1 3 1 1 7 0 7 7 3 1 3 7 6 5 3 1 2 1 2 3 3 1 5 0 10 3 1 2 8 1 5 1 4 4 1 1 3 2 1 3 5 2 3 1 1 3 6 3 6 1 4 5 7 6 2 4 3 3 5 1 7 0 7 2 6 3 3 5 1 9 2 1 3 1 1 1 2 1 9 0 10 9 5 5 4 4 2 8 8 9 1 1 2 3 1 1 3 1 1 1 1 6 0 9 2 1 9 3 1 2 8 7 8 3 2 2 2 1 2 2 3 5 2 3 3 5 1 6 0 10 7 1 9 2 3 6 1 6 4 3 3 3 2 1 1 2 1 5 0 11 6 1 4 3 4 1 4 3 1 5 5 2 1 1 2 3 1 5 0 6 4 1 8 9 9 8 1 1 1 3 1 5 1 4 1 3 3 5 1 6 0 11 9 5 3 7 2 7 3 1 2 4 1 3 2 1 2 1 3 1 7 0 6 6 9 9 1 1 9 1 3 1 2 2 3 2 1 6 0 7 7 6 1 2 1 6 9 1 1 2 1 3 2 3 3 4 3 1 3 7 1 9 0 9 3 7 1 4 3 4 8 7 5 3 2 3 1 1 1 2 1 3 1 5 0 9 1 9 8 7 8 8 8 1 1 2 2 1 3 1 1 6 0 11 9 8 1 1 4 1 4 4 4 6 6 3 2 2 2 1 3 5 2 1 5 2 5 1 5 3 1 4 3 3 6 1 9 0 6 5 6 6 8 3 1 2 1 1 1 1 2 2 2 1 1 9 0 6 1 1 4 7 6 4 2 3 3 1 1 1 3 3 1 1 6 0 7 2 9 9 4 6 1 9 1 1 3 2 3 3 3 3 2 3 4 5 3 5 1 6 0 9 9 1 8 4 3 1 5 7 8 1 1 1 3 3 1 1 9 0 9 6 8 5 2 3 1 5 3 5 2 1 2 1 3 1 1 1 3 1 7 0 10 2 6 8 5 2 6 8 1 6 4 3 2 1 3 1 2 2 5 3 4 1 2 3 6 1 9 0 9 3 3 9 2 1 1 3 6 2 3 3 1 1 3 1 2 3 2 1 5 0 7 2 1 5 6 8 6 1 1 3 1 2 1 1 5 0 6 3 1 6 8 6 2 2 2 1 2 1 2 5 3 3 1 4 3 7 1 7 0 9 6 9 1 5 6 9 3 3 1 2 1 3 2 2 1 2 1 6 0 10 4 1 7 2 6 3 2 7 9 5 1 1 3 3 3 3 1 6 0 8 1 7 1 1 3 7 2 5 2 3 1 3 2 3 3 4 1 5 3 5 3 2 1 1 5 5 3 4 1 7 0 10 8 5 1 1 2 6 4 2 4 2 1 1 3 2 2 2 2 1 5 0 6 8 8 6 4 1 6 2 1 1 2 1 1 9 0 8 6 1 9 8 2 6 8 7 2 3 2 1 1 3 1 2 3 2 1 4 2 3 7 1 5 0 6 8 7 5 7 1 1 2 1 1 2 1 1 9 0 9 7 8 2 1 6 2 5 2 1 2 1 3 1 1 3 2 2 1 1 5 0 11 1 3 9 9 1 3 2 1 3 9 6 3 3 3 1 1 2 2 5 1 5 4 3 3 4 1 5 0 10 7 1 8 6 7 5 1 8 9 2 2 1 1 2 1 1 7 0 8 1 7 1 1 7 1 1 8 3 1 1 1 1 3 3 1 9 0 7 4 1 1 4 3 1 2 3 2 3 1 2 1 3 3 1 4 1 3 1 3 7 1 8 0 9 6 9 2 7 7 6 8 1 9 1 1 2 3 2 1 2 2 1 8 0 6 7 1 1 5 4 6 2 2 1 1 2 2 3 3 1 7 0 7 5 4 5 6 2 7 1 3 1 3 2 3 2 2 3 5 3 2 3 2 1 3 6 1 5 0 11 4 2 9 8 1 7 1 1 2 3 5 3 2 3 3 1 1 9 0 8 1 8 1 7 4 9 7 9 3 2 3 3 1 3 1 1 2 1 6 0 8 8 1 1 8 6 8 7 1 1 2 3 1 1 1 1 3 3 5 3 4 5 4 7 5 2 5 4 3 6 1 5 0 11 1 4 7 7 2 7 4 1 6 6 1 3 3 1 3 1 1 6 0 6 6 4 4 1 3 7 2 3 2 2 1 1 1 8 0 6 3 2 1 6 5 1 1 1 3 3 2 2 3 1 1 2 1 2 5 3 3 4 1 7 0 9 6 4 9 8 1 1 7 7 7 3 1 2 3 1 2 2 1 6 0 7 9 4 9 1 2 3 4 1 1 1 1 3 1 1 8 0 7 1 2 7 1 1 5 6 3 2 1 1 3 1 1 1 4 5 1 2 3 6 1 6 0 8 7 6 6 8 6 8 1 3 2 1 2 1 2 1 1 8 0 7 5 2 6 4 1 1 7 2 3 2 1 1 1 2 3 1 7 0 10 3 9 2 5 5 1 4 3 5 2 1 1 1 2 1 2 3 4 2 3 4 1 2 3 5 1 5 0 8 1 1 8 3 5 5 6 7 3 2 1 3 1 1 9 0 10 9 6 9 5 4 2 5 3 1 2 1 1 3 3 2 1 1 2 1 1 9 0 8 4 4 5 1 3 3 6 5 2 2 3 1 2 2 1 3 2 3 3 4 1 3 3 7 1 6 0 7 7 8 2 1 4 2 1 3 2 2 1 3 2 1 5 0 8 6 6 1 1 1 4 7 7 1 1 1 2 1 1 7 0 11 1 1 5 2 1 8 4 8 1 4 8 2 3 1 1 1 2 1 2 5 4 1 5 3 2 2 4 3 7 5 5 3 7 1 8 0 6 7 1 1 4 8 8 1 2 2 2 3 1 1 1 1 9 0 10 1 7 9 2 3 8 1 5 3 6 1 3 3 2 3 2 1 2 2 1 6 0 8 2 1 9 8 6 3 2 1 1 1 3 3 3 1 1 1 1 5 5 3 1 3 4 1 6 0 6 1 5 6 3 5 1 3 1 3 3 1 2 1 9 0 7 8 5 1 4 5 4 6 3 1 3 1 3 2 2 3 1 1 9 0 10 5 9 8 6 5 7 4 1 2 8 3 1 1 3 3 3 3 2 1 4 4 1 5 3 6 1 7 0 8 9 7 2 3 4 3 1 7 2 1 3 1 3 1 2 1 5 0 8 2 9 7 1 3 6 1 2 1 2 3 3 2 1 7 0 10 9 1 8 2 4 5 5 1 1 7 2 1 3 1 1 3 2 3 1 1 1 4 5 3 5 1 7 0 9 7 3 7 5 8 8 7 9 1 3 2 1 3 3 3 1 1 6 0 8 5 1 6 9 5 8 1 8 1 3 2 1 2 1 1 7 0 11 1 7 5 2 1 7 9 3 2 9 2 2 2 1 2 3 1 1 3 1 2 2 1 3 6 1 9 0 10 1 5 1 3 8 7 8 9 4 4 2 1 1 1 3 2 3 3 1 1 9 0 8 4 3 2 9 2 6 4 1 1 1 2 1 1 3 2 1 2 1 5 0 11 9 6 2 1 8 2 3 7 9 4 5 1 2 1 2 3 2 2 5 3 4 2 7 2 5 5 4 5 5 3 5 1 9 0 9 1 4 1 8 4 3 1 6 9 2 1 1 2 1 3 1 2 2 1 6 0 9 7 7 5 7 9 8 9 1 1 3 2 3 3 1 3 1 5 0 10 5 9 7 1 4 8 2 1 7 9 2 3 2 1 3 1 2 3 2 2 3 6 1 7 0 11 6 4 1 1 9 9 9 2 8 7 2 3 2 1 1 1 2 1 1 6 0 9 1 4 3 1 5 9 9 9 5 1 1 1 1 1 1 1 7 0 8 7 6 6 1 9 1 5 2 2 2 1 2 1 3 3 5 2 2 5 2 1 3 6 1 9 0 11 8 1 8 4 3 9 1 1 5 3 2 3 2 1 3 3 1 1 1 1 1 5 0 7 1 8 1 4 1 4 7 3 1 2 2 1 1 6 0 6 7 2 1 2 2 4 2 2 2 2 1 1 1 5 3 1 1 2 3 4 1 7 0 6 8 1 3 9 4 9 1 2 2 2 2 1 2 1 9 0 7 8 6 1 3 8 1 7 2 1 1 3 1 2 1 2 1 1 6 0 7 5 7 3 7 6 2 1 1 1 1 2 1 1 4 1 1 5 3 4 1 8 0 11 2 6 2 4 1 9 9 2 8 5 1 2 1 3 1 2 1 1 1 1 9 0 10 2 9 2 5 6 1 7 2 4 3 3 1 2 2 3 3 3 1 1 1 7 0 7 1 2 5 3 9 7 1 1 2 2 3 2 1 1 5 2 2 5 2 4 4 7 6 3 6 6 3 5 3 3 5 1 9 0 7 6 7 6 9 5 1 8 1 2 1 1 2 1 3 3 1 1 8 0 9 8 5 9 4 1 2 7 1 9 2 3 3 2 3 1 1 1 1 6 0 6 8 2 9 4 1 8 2 1 2 2 2 1 4 3 3 3 2 3 4 1 9 0 6 1 8 1 6 4 3 2 3 2 1 1 1 3 1 2 1 6 0 9 2 1 9 5 2 3 9 4 1 2 1 1 1 3 2 1 7 0 10 2 3 1 5 5 2 2 4 5 5 1 2 3 3 1 1 1 2 5 3 1 3 7 1 8 0 11 9 9 1 8 9 3 7 4 6 9 1 3 1 1 3 1 2 2 1 1 9 0 9 3 6 4 3 3 2 1 1 5 3 1 2 3 3 2 1 2 1 1 5 0 6 1 5 1 7 7 9 1 1 3 3 2 4 1 5 1 5 1 4 3 6 1 8 0 6 1 6 6 5 6 6 3 3 3 3 1 2 1 1 1 9 0 7 6 3 7 9 1 3 6 2 2 3 1 2 3 1 1 1 1 6 0 7 3 2 1 1 6 7 5 1 3 3 3 3 2 4 3 5 2 5 3 3 5 1 7 0 10 7 9 5 4 2 3 1 3 1 3 3 1 2 1 3 2 3 1 7 0 10 1 5 4 1 9 6 8 5 6 6 1 3 3 2 1 2 1 1 5 0 8 1 1 7 3 8 7 8 3 3 1 3 2 1 5 1 1 5 4 7 3 6 5 5 3 6 1 7 0 7 6 1 1 9 3 2 3 2 2 2 3 3 1 1 1 9 0 9 5 1 7 1 8 2 6 1 6 3 2 2 1 3 3 1 2 3 1 9 0 10 6 7 2 8 6 9 2 1 7 1 1 2 2 1 3 2 2 3 3 3 2 2 2 1 3 3 7 1 5 0 6 6 7 4 4 1 7 1 1 2 3 2 1 8 0 7 2 3 1 9 1 9 2 2 1 3 3 1 3 1 1 1 5 0 11 7 3 9 2 3 7 2 1 1 4 6 2 1 3 2 1 5 4 2 4 4 2 1 3 5 1 8 0 6 1 1 1 2 6 1 2 1 3 2 1 3 2 3 1 8 0 11 1 8 8 3 6 9 2 1 2 2 5 3 2 2 3 2 1 3 2 1 6 0 8 1 1 2 4 5 6 9 1 1 1 2 1 2 3 4 3 5 5 1 3 6 1 6 0 8 1 2 8 8 7 2 1 2 1 1 3 2 1 1 1 5 0 8 1 5 8 9 1 1 9 1 1 1 3 3 1 1 6 0 11 1 5 9 8 6 8 8 2 5 3 7 1 3 2 1 2 1 5 1 1 1 2 3 3 6 1 9 0 6 6 1 6 4 2 8 1 2 2 1 1 3 1 2 3 1 6 0 10 2 1 1 1 5 7 6 4 7 3 3 1 3 2 1 1 1 9 0 6 1 8 1 8 2 2 1 1 3 1 1 3 2 1 2 5 1 3 2 1 1 5 7 2 4 5 5 5 3 7 1 9 0 10 5 5 9 2 2 7 4 7 1 2 1 3 2 1 3 1 2 1 3 1 7 0 8 6 8 3 5 1 5 3 1 1 3 1 2 1 3 2 1 9 0 7 1 9 9 9 1 1 6 1 1 2 3 1 3 3 1 3 4 4 4 2 4 4 5 3 7 1 5 0 10 8 8 5 8 5 6 8 4 1 2 2 1 3 3 1 1 9 0 11 5 9 3 1 5 1 1 6 6 6 5 1 2 3 3 1 3 1 1 1 1 8 0 9 8 6 1 5 7 5 9 9 2 1 1 2 2 3 3 3 3 5 1 3 4 4 3 1 3 7 1 8 0 6 9 3 9 8 1 6 1 2 3 3 3 2 3 1 1 9 0 8 6 1 3 1 4 9 6 1 1 1 1 1 1 2 3 1 3 1 8 0 11 5 2 3 5 2 6 2 1 2 5 4 2 1 1 1 2 1 1 1 5 2 1 2 2 5 1 3 4 1 9 0 9 5 8 9 7 7 9 8 1 7 3 1 3 3 3 2 1 3 1 1 5 0 11 5 8 2 3 8 6 2 2 1 6 9 1 1 3 1 3 1 7 0 10 3 1 1 1 4 1 2 7 3 4 3 2 1 3 2 1 1 4 3 5 3 3 6 1 6 0 10 2 7 5 6 6 5 4 6 2 1 2 2 2 1 2 1 1 8 0 11 5 1 9 2 7 8 5 8 3 4 5 3 2 1 1 1 1 3 3 1 9 0 10 8 6 7 1 2 3 7 7 6 8 2 2 3 1 3 1 3 2 3 3 1 1 4 4 5 1 2 4 4 6 5 5 3 5 1 6 0 8 2 6 1 4 5 7 8 3 2 2 1 3 2 2 1 9 0 8 7 2 9 1 8 8 5 5 3 2 2 2 3 2 2 3 1 1 6 0 8 9 1 8 1 2 1 6 5 2 1 3 3 1 1 5 2 4 5 3 3 4 1 8 0 6 3 2 6 1 5 9 1 3 3 3 3 2 3 1 1 6 0 10 4 8 5 5 5 5 7 4 1 9 3 1 2 3 3 3 1 6 0 8 4 8 1 4 8 6 8 1 3 2 3 1 2 1 1 1 2 4 3 5 1 5 0 7 1 9 5 4 1 9 7 2 2 2 1 1 1 6 0 9 3 1 2 9 6 2 3 5 6 1 1 2 3 3 1 1 8 0 7 7 7 3 4 1 4 7 3 1 1 2 2 1 1 2 4 3 2 2 2 3 5 1 5 0 6 4 8 1 1 6 1 3 1 1 1 3 1 6 0 7 7 2 5 5 7 1 2 1 1 1 2 3 3 1 9 0 8 3 6 3 1 7 3 1 4 2 2 1 2 3 1 3 3 1 2 3 1 4 5 3 6 1 7 0 10 8 5 7 5 9 4 1 9 3 5 2 2 1 3 1 2 3 1 7 0 9 8 4 3 1 7 8 8 6 5 1 2 3 1 3 2 3 1 8 0 9 4 1 6 2 5 1 8 5 8 2 3 2 1 2 1 3 3 4 1 4 1 5 1 3 3 4 4 4 5 3 3 6 1 6 0 9 1 7 1 8 1 2 5 8 6 1 2 2 1 2 1 1 6 0 9 8 2 6 1 2 8 4 8 7 2 2 3 2 1 1 1 5 0 11 4 4 2 3 1 3 4 1 1 7 1 1 3 1 2 1 1 2 5 5 2 2 3 5 1 9 0 10 4 7 5 9 6 1 5 2 6 1 1 1 1 2 1 2 2 3 2 1 5 0 10 4 8 8 8 6 2 1 8 1 4 3 1 1 1 1 1 8 0 10 3 9 7 7 2 1 7 1 1 6 2 2 2 1 3 1 2 3 2 5 5 4 1 3 5 1 9 0 10 3 5 8 7 1 4 2 8 1 5 1 2 1 1 3 1 1 3 1 1 9 0 8 6 1 8 1 7 9 2 1 1 3 3 3 1 1 2 1 3 1 6 0 10 9 5 5 6 5 6 2 5 6 1 1 1 3 2 1 2 5 3 5 2 2 3 4 1 7 0 8 8 9 4 1 5 4 1 8 1 1 3 3 2 2 3 1 8 0 9 1 9 3 1 4 3 9 9 5 3 1 2 2 1 3 1 1 1 6 0 9 5 3 7 5 3 3 7 1 5 1 1 2 1 2 3 4 1 5 5 3 5 1 6 0 10 9 2 8 5 1 9 9 4 1 4 1 2 1 1 2 1 1 7 0 9 4 8 3 9 2 5 8 1 5 3 1 2 3 1 3 2 1 8 0 6 7 5 6 1 5 5 2 3 1 2 1 2 1 1 4 5 4 5 3 3 1 1 4 5 3 5 1 8 0 8 6 3 3 9 7 9 1 1 1 2 3 2 1 2 2 3 1 9 0 6 8 9 4 1 7 9 1 1 2 1 3 2 3 1 2 1 6 0 7 2 6 2 9 1 2 1 1 1 2 1 2 2 5 3 2 4 3 3 4 1 9 0 10 1 2 1 7 1 1 1 6 9 2 3 2 1 2 3 2 1 2 1 1 8 0 11 1 2 2 6 7 8 9 2 2 6 6 3 3 1 2 3 1 2 2 1 6 0 7 7 5 3 8 1 5 9 1 1 2 2 3 1 2 1 1 5 3 7 1 7 0 11 7 5 4 5 1 7 8 6 7 3 4 2 1 2 2 2 2 2 1 5 0 8 3 9 7 7 1 9 9 8 1 3 1 2 1 1 5 0 6 4 3 4 8 1 2 3 1 1 2 1 4 3 1 3 1 1 2 3 7 1 6 0 8 3 7 3 9 6 3 6 1 2 3 2 1 1 1 1 7 0 9 1 1 1 6 2 9 6 2 1 1 1 3 3 1 1 3 1 8 0 11 8 7 8 1 4 4 5 2 3 4 1 1 1 1 1 3 2 2 1 4 1 3 4 5 4 2 1 6 2 5 1 6 2 2 7 2 5 4 3 7 1 5 0 9 2 4 5 6 7 5 1 4 7 1 1 1 1 2 1 8 0 8 2 1 3 5 6 2 8 1 1 2 1 3 3 3 1 1 1 9 0 11 9 1 5 7 2 6 2 3 2 9 7 2 1 1 1 2 2 3 1 1 3 1 2 5 1 1 4 3 4 1 8 0 6 2 1 6 9 1 3 3 2 1 1 1 3 1 1 1 7 0 8 8 1 6 6 5 3 2 3 2 2 1 3 3 1 2 1 5 0 8 4 3 6 1 8 1 5 1 3 3 3 1 2 1 3 4 2 3 4 1 8 0 6 5 1 9 6 3 5 3 1 2 1 1 3 2 2 1 5 0 9 9 3 9 1 2 4 4 9 5 1 1 2 3 1 1 9 0 11 3 8 9 1 5 2 6 3 5 9 1 3 1 1 1 1 2 3 1 1 2 4 4 1 3 4 1 7 0 9 8 7 2 1 5 5 8 1 2 3 3 3 2 1 1 1 1 6 0 7 3 6 7 1 5 4 7 2 1 2 1 2 3 1 5 0 8 3 3 3 2 8 1 1 3 1 2 1 3 3 5 1 4 3 3 7 1 6 0 7 2 8 9 8 1 3 1 1 3 1 1 1 1 1 6 0 8 4 7 1 8 4 7 1 8 2 1 1 2 1 2 1 5 0 9 1 4 4 5 2 1 1 5 9 1 3 3 3 1 2 5 3 2 2 4 4 3 4 2 2 5 5 3 5 1 8 0 7 1 9 4 5 3 2 4 3 1 3 2 3 2 2 2 1 8 0 7 4 2 1 3 3 2 4 1 1 3 1 3 3 2 1 1 7 0 7 3 1 1 3 1 4 3 3 2 1 1 1 1 3 4 2 4 5 2 3 7 1 7 0 11 7 7 9 4 5 4 1 6 6 6 1 1 2 2 3 3 1 2 1 9 0 6 1 7 4 3 4 6 1 2 3 1 3 3 3 1 2 1 7 0 6 2 8 1 1 5 4 1 2 1 1 2 1 2 5 3 2 1 4 4 2 3 5 1 6 0 11 8 7 5 7 1 3 6 7 9 1 4 3 2 3 1 2 2 1 7 0 8 3 1 5 9 7 9 6 5 3 1 2 2 2 1 1 1 9 0 7 7 1 8 3 3 9 7 1 2 2 2 3 2 1 3 2 4 5 3 4 2 3 7 1 8 0 7 4 7 3 1 2 1 9 3 2 2 3 3 3 2 1 1 8 0 7 1 8 8 3 1 6 9 3 3 2 1 3 3 1 1 1 8 0 6 1 1 2 1 9 5 2 1 1 3 2 1 3 3 4 2 2 1 2 3 1 3 4 1 8 0 7 2 3 1 6 7 2 4 2 2 1 1 2 3 3 2 1 5 0 10 8 4 5 2 1 3 3 8 5 8 1 1 3 1 1 1 7 0 6 7 6 9 6 9 1 1 1 3 1 2 2 1 1 2 1 1 5 6 3 2 6 4 4 3 5 1 5 0 7 8 5 4 9 9 1 4 2 1 2 1 3 1 7 0 11 3 2 2 9 5 6 9 8 9 1 3 1 2 2 1 3 1 1 1 5 0 11 1 1 9 9 8 2 5 8 8 2 6 1 3 1 1 2 5 4 3 3 2 3 4 1 6 0 6 5 6 1 1 2 5 2 3 2 1 3 1 1 8 0 10 4 4 1 7 5 1 4 6 9 6 2 2 1 1 1 2 3 2 1 7 0 10 1 8 1 6 1 1 3 3 8 8 1 3 1 1 3 2 3 2 4 4 4 3 5 1 7 0 9 1 5 1 9 7 2 1 1 7 1 2 1 3 1 1 2 1 8 0 11 1 8 3 5 4 6 7 8 4 9 1 2 2 1 1 3 2 3 3 1 5 0 11 3 2 1 1 8 7 5 1 3 9 8 3 1 3 3 3 5 1 2 3 1 3 6 1 5 0 6 8 6 1 4 1 7 3 1 1 1 1 1 6 0 7 8 8 1 8 1 2 7 2 3 3 1 1 3 1 6 0 6 1 9 1 1 4 1 2 1 2 2 3 2 5 4 1 1 2 5 3 3 2 5 5 5 3 7 1 8 0 11 1 7 5 6 3 8 5 1 5 6 2 1 1 1 2 2 2 1 1 1 8 0 7 9 8 1 6 6 5 7 1 1 2 2 3 3 2 3 1 8 0 10 8 6 9 2 1 2 9 7 6 7 1 1 2 3 3 2 2 1 3 3 3 1 1 1 1 3 6 1 8 0 7 2 1 6 1 2 3 7 1 2 3 3 1 3 3 3 1 5 0 6 2 2 1 1 5 2 2 1 2 3 1 1 6 0 11 6 5 8 2 2 6 3 9 4 3 1 1 2 3 3 3 1 3 4 4 2 5 3 3 4 1 7 0 8 1 6 1 4 4 5 5 1 2 3 1 2 3 1 1 1 7 0 8 1 6 3 1 6 1 5 9 3 2 3 1 1 2 3 1 6 0 11 2 8 6 2 1 8 5 9 6 5 9 1 3 2 1 1 1 1 1 1 5 3 6 1 6 0 11 8 5 8 6 1 6 1 2 5 5 1 3 1 3 1 2 2 1 5 0 10 4 5 3 2 4 1 7 1 3 2 3 1 2 2 2 1 5 0 8 7 5 8 1 8 1 3 8 1 2 2 1 1 5 5 1 5 5 5 3 6 1 5 0 8 3 1 1 6 1 7 6 5 2 1 1 1 2 1 9 0 8 5 8 1 7 5 1 7 9 2 3 3 1 2 2 1 1 3 1 6 0 6 3 8 5 7 1 4 1 1 3 2 1 2 2 4 3 2 3 5 2 4 7 3 4 4 4 3 7 1 6 0 11 1 1 8 8 4 9 3 3 9 1 4 1 2 1 3 2 3 1 5 0 8 8 7 8 2 5 6 1 9 2 3 1 1 2 1 9 0 11 9 1 8 7 6 9 1 3 5 7 1 2 1 1 1 2 2 1 3 3 1 1 2 5 1 3 2 3 6 1 6 0 10 9 2 6 2 8 1 6 8 2 2 1 2 3 1 2 3 1 6 0 11 9 9 1 2 7 4 4 4 1 2 5 3 1 1 2 1 1 1 8 0 10 7 8 9 1 7 5 8 9 3 2 2 3 3 3 1 3 1 3 2 1 1 3 1 5 3 7 1 8 0 8 6 3 3 1 1 6 8 5 1 1 3 3 1 1 2 1 1 8 0 8 7 4 4 1 4 8 4 4 2 3 1 2 1 1 2 1 1 9 0 7 1 1 3 6 3 5 5 1 1 3 2 1 2 2 2 1 4 1 3 5 5 5 4 3 5 1 7 0 7 3 9 5 1 8 4 1 2 1 2 3 3 1 3 1 6 0 9 6 8 5 1 9 8 8 7 8 1 2 3 2 3 2 1 6 0 11 8 3 9 2 1 4 7 2 1 3 1 2 3 1 1 1 3 4 1 1 2 3 1 6 4 1 5 5 3 5 1 9 0 10 1 8 8 8 2 8 2 4 3 9 3 1 2 2 3 3 1 3 1 1 6 0 11 1 1 3 9 4 9 1 9 2 4 7 2 1 1 3 1 3 1 8 0 8 2 1 8 8 6 5 1 1 1 1 3 2 1 1 2 1 2 5 4 5 2 3 6 1 5 0 9 1 9 7 6 5 3 2 8 5 2 1 1 3 1 1 7 0 11 2 1 7 3 3 7 3 1 6 8 5 1 1 3 2 2 2 3 1 7 0 7 1 7 3 1 3 5 1 1 3 3 1 1 1 1 3 1 4 4 3 2 3 4 1 6 0 10 4 5 1 1 7 1 9 4 4 4 1 1 3 2 2 1 1 6 0 11 6 3 1 5 3 6 1 7 1 9 4 2 1 1 1 2 3 1 7 0 9 8 4 8 4 2 6 1 5 1 2 2 1 1 3 3 1 3 4 2 3 3 7 1 7 0 11 1 8 8 6 1 7 1 6 9 7 8 3 1 3 1 1 1 3 1 6 0 9 1 6 6 7 5 4 7 8 7 3 2 1 1 3 3 1 5 0 8 2 7 1 6 3 1 2 6 2 2 2 2 1 3 3 5 4 1 2 2 3 4 1 6 0 6 5 3 1 8 5 6 1 2 3 1 3 1 1 9 0 7 9 1 4 5 5 5 3 3 1 3 3 2 1 1 3 1 1 5 0 10 1 8 1 4 6 5 1 3 2 3 2 3 1 1 1 2 1 4 5 3 2 1 4 6 5 5 3 5 1 6 0 7 1 1 8 1 4 9 5 2 1 2 1 2 1 1 6 0 8 9 5 7 3 8 2 1 7 1 3 3 3 3 2 1 8 0 6 8 1 1 7 1 4 2 3 3 2 2 1 3 1 4 1 1 2 2 3 4 1 7 0 8 5 7 3 3 6 6 1 9 2 3 3 1 2 3 1 1 6 0 9 1 6 3 8 4 1 8 8 3 3 2 1 1 3 1 1 8 0 6 3 2 6 1 1 5 3 1 3 1 1 1 1 1 3 4 1 2 3 4 1 8 0 9 1 2 3 6 5 2 5 1 7 2 3 1 2 1 3 3 1 1 8 0 7 7 2 4 1 6 2 2 2 3 1 1 2 2 2 1 1 6 0 11 9 9 7 2 9 9 8 2 6 1 8 2 1 3 1 2 3 4 5 2 1 3 5 1 9 0 11 6 2 2 4 8 5 6 9 5 1 4 2 2 3 3 1 2 3 3 1 1 6 0 11 3 9 9 1 3 3 6 2 1 6 1 1 2 2 2 1 3 1 8 0 6 9 8 4 1 6 5 2 2 2 3 1 1 1 3 2 3 2 1 3 3 4 1 9 0 8 4 1 3 1 1 1 6 7 3 2 2 3 1 3 2 1 1 1 6 0 7 5 6 1 4 6 5 1 1 1 1 2 3 2 1 9 0 8 8 1 3 9 3 1 1 1 3 2 1 2 1 1 2 2 1 2 5 1 4 4 7 1 1 1 3 2 7 2 5 3 3 4 1 9 0 11 1 5 1 9 1 7 5 9 3 2 6 3 1 1 2 2 1 1 3 2 1 8 0 10 3 8 7 1 9 1 1 9 6 1 1 3 2 3 2 2 2 2 1 7 0 10 8 6 9 8 6 1 4 8 5 3 3 1 3 3 2 3 1 1 4 3 3 3 5 1 8 0 8 1 7 7 2 1 8 7 3 2 1 1 1 1 1 2 3 1 9 0 11 7 7 4 3 3 1 6 6 8 8 6 2 2 3 2 1 3 1 1 1 1 8 0 8 1 1 8 2 1 1 7 5 2 2 2 1 2 1 3 2 1 5 1 4 2 3 4 1 5 0 8 5 1 1 6 3 2 7 5 1 1 3 3 3 1 6 0 9 6 2 1 2 3 1 9 1 6 3 2 2 1 2 2 1 9 0 11 6 2 5 2 2 2 3 7 3 1 4 3 3 1 1 2 1 3 1 1 5 3 3 3 3 4 1 7 0 7 3 9 5 1 1 4 1 1 1 3 1 1 2 2 1 9 0 6 1 2 1 1 6 7 2 3 2 2 1 2 3 2 1 1 7 0 8 1 3 3 9 1 4 5 1 2 2 3 1 3 3 1 1 1 5 4 3 7 1 7 0 8 2 6 1 6 3 9 9 9 1 2 1 3 1 2 1 1 6 0 9 1 8 6 5 2 6 3 6 4 1 1 1 3 1 3 1 8 0 11 6 7 5 4 9 3 8 9 1 2 2 1 1 1 3 3 1 3 1 5 3 2 2 2 5 5 2 3 3 4 3 3 6 1 6 0 11 9 2 2 8 7 1 1 5 5 6 3 2 1 3 1 1 2 1 7 0 7 4 3 1 7 9 1 5 2 3 1 2 3 2 1 1 5 0 7 5 7 8 1 4 4 1 2 3 1 2 3 5 1 2 5 3 3 3 4 1 5 0 10 1 4 1 4 5 2 9 6 9 1 3 2 3 1 2 1 5 0 6 1 6 8 5 7 5 1 1 3 2 1 1 5 0 7 8 1 1 9 6 1 3 2 2 3 3 1 3 1 2 3 3 5 1 8 0 7 7 8 2 1 6 2 9 1 3 3 2 2 1 3 2 1 6 0 7 5 3 3 1 5 9 2 1 3 1 1 3 1 1 5 0 6 1 3 4 2 2 4 2 1 2 2 1 4 1 5 5 5 3 6 1 6 0 9 2 7 4 2 4 7 3 8 1 1 1 3 1 2 3 1 8 0 9 8 3 1 1 6 2 6 2 1 3 1 2 2 3 3 1 2 1 8 0 10 3 5 4 8 7 8 5 5 1 4 1 1 3 1 2 2 3 2 5 4 3 1 5 3 1 3 4 5 5 3 7 1 9 0 7 2 1 8 4 8 1 3 3 1 3 2 1 1 3 1 2 1 6 0 11 4 3 6 3 6 4 8 4 1 1 1 2 1 1 3 2 1 1 9 0 6 1 8 2 5 9 2 3 3 1 3 3 3 2 2 1 3 1 4 4 4 2 1 3 6 1 6 0 9 8 1 6 2 3 5 2 8 1 3 1 2 1 1 1 1 8 0 9 3 5 3 1 7 1 2 9 8 1 3 2 1 1 3 2 2 1 8 0 10 6 6 3 8 1 1 5 7 6 7 3 3 3 1 2 3 1 3 4 2 1 3 4 5 3 7 1 7 0 9 8 1 4 5 8 9 1 6 7 3 2 1 2 1 1 1 1 5 0 9 4 5 2 1 8 7 5 2 9 3 1 1 1 2 1 6 0 11 4 5 4 8 4 6 4 6 8 1 3 3 3 1 2 1 2 3 2 1 1 5 1 4 3 7 1 7 0 6 3 1 9 5 2 4 1 2 3 1 1 2 3 1 5 0 6 3 7 1 5 4 2 2 2 1 3 3 1 6 0 6 1 4 6 5 1 7 3 1 1 1 1 2 4 5 4 2 4 3 2 3 7 1 8 0 8 2 3 6 1 8 1 2 5 1 1 2 1 3 3 1 1 1 7 0 8 4 1 2 6 4 9 8 5 1 3 1 3 2 3 2 1 8 0 7 4 1 6 4 1 1 2 3 3 3 1 1 1 3 3 5 3 2 2 3 1 3 4 4 5 2 6 5 3 3 5 1 5 0 6 7 1 8 1 4 8 1 1 2 3 1 1 5 0 11 6 3 1 6 1 4 7 9 5 1 3 2 1 1 1 3 1 9 0 7 4 7 1 1 2 8 1 2 1 3 1 3 1 2 3 1 1 4 5 2 2 3 7 1 7 0 6 1 9 1 8 2 3 3 1 1 1 2 3 3 1 9 0 6 9 2 2 2 1 5 1 2 2 3 1 3 2 2 3 1 8 0 9 1 2 1 2 5 5 9 5 7 1 1 3 1 3 3 3 1 4 3 3 5 2 1 4 3 4 1 8 0 11 2 1 2 4 5 7 5 6 1 3 4 1 2 1 2 3 1 2 1 1 5 0 9 8 2 9 8 8 9 9 1 4 1 3 1 2 2 1 5 0 6 2 1 9 2 8 2 1 1 3 3 2 1 2 4 1 3 7 1 8 0 9 1 2 5 1 4 9 5 6 6 1 2 2 1 2 1 1 3 1 7 0 9 9 9 3 1 1 6 6 7 3 2 3 2 1 1 2 2 1 5 0 10 8 5 1 6 4 3 1 2 6 8 3 1 3 2 1 3 2 5 4 3 1 5 3 7 1 6 0 8 1 4 1 6 6 8 2 4 1 1 1 1 2 1 1 7 0 10 7 5 9 7 3 2 1 4 3 1 1 1 2 3 3 1 1 1 7 0 7 1 4 6 3 3 9 1 1 3 2 1 3 2 1 3 2 1 3 1 3 3 6 1 2 5 4 3 5 1 7 0 10 5 1 5 4 1 1 9 1 5 6 1 2 3 3 1 2 3 1 8 0 10 5 2 6 3 2 8 6 2 1 1 3 3 3 2 2 1 3 2 1 7 0 9 4 1 2 6 3 1 8 9 9 3 2 2 2 2 1 3 2 4 3 3 4 3 6 1 5 0 10 7 2 1 7 8 4 9 8 1 1 1 1 3 3 2 1 7 0 9 7 5 8 7 8 1 9 9 1 3 3 1 1 2 2 1 1 7 0 8 9 2 7 3 1 5 8 6 3 3 1 3 3 1 3 5 2 3 2 4 2 3 6 1 9 0 9 9 4 1 5 7 9 1 1 6 3 3 1 1 1 1 1 1 3 1 5 0 9 3 6 2 8 9 1 1 5 1 1 1 2 1 3 1 6 0 11 6 8 7 4 1 6 6 1 8 6 3 3 3 3 1 2 2 5 2 4 2 2 2 3 6 1 5 0 10 1 6 2 4 5 6 3 1 5 7 1 3 2 1 2 1 8 0 6 1 7 8 7 9 1 3 3 2 3 3 1 1 2 1 9 0 11 4 1 2 2 1 4 3 9 5 8 7 2 1 3 1 3 1 3 1 3 4 5 3 1 2 1 3 6 1 5 0 6 2 3 4 8 1 6 3 1 1 3 3 1 8 0 11 4 3 4 3 4 3 7 1 7 1 1 1 1 1 3 1 3 2 3 1 5 0 8 1 5 8 4 1 4 3 8 2 1 1 1 1 3 4 5 5 3 3 2 3 1 2 5 3 3 7 1 6 0 7 2 2 7 2 1 3 2 3 1 3 1 3 1 1 6 0 9 2 3 2 7 5 1 1 9 7 3 1 2 3 3 3 1 6 0 7 8 9 8 4 1 3 2 2 2 2 1 1 3 3 5 1 4 5 1 4 3 7 1 6 0 8 5 9 6 9 8 1 5 7 3 3 2 3 1 2 1 8 0 11 3 8 9 2 8 3 6 1 9 4 7 1 3 3 3 3 1 1 1 1 7 0 11 1 8 2 1 6 9 9 9 8 5 1 1 1 1 2 2 3 1 1 2 5 2 2 1 2 3 4 1 9 0 8 7 1 5 1 6 1 6 3 2 1 3 2 2 1 3 1 3 1 9 0 10 4 3 6 3 1 1 6 7 1 9 2 2 3 2 2 2 1 1 1 1 7 0 6 9 1 7 2 4 1 2 2 1 3 1 2 1 3 2 2 4 3 6 1 5 0 9 7 6 3 7 1 7 3 4 3 1 1 1 3 2 1 8 0 8 5 3 3 5 1 3 3 1 2 1 1 1 3 1 2 2 1 8 0 10 4 9 2 2 2 8 7 7 8 1 3 3 1 1 1 3 3 1 1 5 5 4 1 2 3 4 1 9 0 9 7 5 3 1 3 4 8 1 2 2 1 3 3 3 1 1 2 1 1 8 0 7 8 8 4 6 1 5 8 1 2 1 3 1 2 2 2 1 9 0 6 2 8 8 5 1 1 2 2 2 1 1 3 1 2 2 2 4 4 3 2 3 4 5 5 3 7 1 5 0 8 1 2 9 8 1 4 5 8 1 1 1 3 3 1 7 0 9 2 3 9 5 1 3 1 9 7 1 3 2 3 1 1 1 1 9 0 8 1 5 4 2 5 9 1 1 3 2 2 1 3 2 1 1 1 3 4 3 3 2 4 2 3 6 1 9 0 11 7 2 4 6 1 8 5 5 2 4 5 2 2 3 1 1 1 2 3 3 1 8 0 9 6 9 9 2 8 9 8 5 1 3 2 3 1 1 3 3 2 1 7 0 9 5 1 2 4 5 7 3 2 1 1 1 1 1 1 1 1 2 5 5 3 4 3 3 4 1 9 0 9 4 4 3 1 4 3 9 4 8 1 2 1 2 2 2 1 3 1 1 5 0 10 3 5 9 8 8 4 3 9 8 1 1 1 1 3 1 1 5 0 7 2 1 9 8 5 1 5 3 2 2 1 2 3 5 2 4 3 6 1 9 0 11 5 3 1 3 7 1 7 1 5 1 9 1 1 1 1 2 3 3 3 3 1 5 0 6 1 6 9 5 8 8 2 3 3 3 1 1 9 0 7 2 5 1 5 2 2 1 2 3 1 1 1 3 2 3 3 4 3 3 4 4 2 3 6 1 6 0 8 9 3 6 8 1 9 4 2 1 2 2 1 3 2 1 7 0 6 6 1 8 2 5 6 1 2 3 3 3 2 1 1 6 0 8 9 1 8 3 1 5 3 5 3 1 1 1 2 1 2 4 4 5 4 5 3 7 1 2 6 9 7 6 7 6 7 6 7 2 9 1 7 1 diff --git a/src/2019/day8/README.md b/src/2019/day8/README.md new file mode 100644 index 0000000..3b3f73a --- /dev/null +++ b/src/2019/day8/README.md @@ -0,0 +1,25 @@ +--- Day 8: Space Image Format --- + +The Elves' spirits are lifted when they realize you have an opportunity to reboot one of their Mars rovers, and so they are curious if you would spend a brief sojourn on Mars. You land your ship near the rover. + +When you reach the rover, you discover that it's already in the process of rebooting! It's just waiting for someone to enter a BIOS password. The Elf responsible for the rover takes a picture of the password (your puzzle input) and sends it to you via the Digital Sending Network. + +Unfortunately, images sent via the Digital Sending Network aren't encoded with any normal encoding; instead, they're encoded in a special Space Image Format. None of the Elves seem to remember why this is the case. They send you the instructions to decode it. + +Images are sent as a series of digits that each represent the color of a single pixel. The digits fill each row of the image left-to-right, then move downward to the next row, filling rows top-to-bottom until every pixel of the image is filled. + +Each image actually consists of a series of identically-sized layers that are filled in this way. So, the first digit corresponds to the top-left pixel of the first layer, the second digit corresponds to the pixel to the right of that on the same layer, and so on until the last digit, which corresponds to the bottom-right pixel of the last layer. + +For example, given an image 3 pixels wide and 2 pixels tall, the image data 123456789012 corresponds to the following image layers: + +Layer 1: 123 + 456 + +Layer 2: 789 + 012 + +The image you received is 25 pixels wide and 6 pixels tall. + +To make sure the image wasn't corrupted during transmission, the Elves would like you to find the layer that contains the fewest 0 digits. On that layer, what is the number of 1 digits multiplied by the number of 2 digits? + + diff --git a/src/2019/day8/aoc.cpp b/src/2019/day8/aoc.cpp new file mode 100644 index 0000000..f0cbc1b --- /dev/null +++ b/src/2019/day8/aoc.cpp @@ -0,0 +1,5 @@ +#include "aoc.h" + +namespace aoc2019 { + +} diff --git a/src/2019/day8/aoc.h b/src/2019/day8/aoc.h new file mode 100644 index 0000000..959d6d8 --- /dev/null +++ b/src/2019/day8/aoc.h @@ -0,0 +1,6 @@ +#pragma once +#include "common.h" + +namespace aoc2019 { + +} diff --git a/src/2019/day8/input b/src/2019/day8/input new file mode 100644 index 0000000..0c8be9c --- /dev/null +++ b/src/2019/day8/input @@ -0,0 +1 @@ +202222221222221022222222222222222222220220010222222221222220022202222221222220222222222222222222222222222202220212022222202222222012200222221222220222222222220222220222222222222222222222221221122222222221222220222202222220222221222222222222222222222222222202220222222222202222222122212222221222221222202222220222221222222222222222222222201222102222222220222220222202222220222222222222222222222222222222222212222212222222222222222012200222220222221222202222220222222022222222022222222222200222022222222222222221222202222221222221222222222222222222222222222212220222122222222222221222200222220222222222202222221222221222222222022222222222211221011222222220222221122202222220222221222222222222222222222222222202220212022222212222221022211022220222222222202222221022222022222222122222222222200222201222222221222220222202222222222221222222222222222222222222222212221202122222222222220202212222220222221222202222221122222122222222222222222222210222100222222220222222222212222221222221222222222222222222222222222212220202122222222222220212202122220222220222222222222022220222222222022222222222221221211122222222222220022212222221222221222222222222222222222222222202220212122222202222221012222122220222222222202222221122221222222222222222222222222222022022222222222222222212222222222220222222222222222222222022222222220212122222202222222102202122221222221222212222220122220122222222022222222222210221001022222221222200022222222220222220222022222222222222222222222222221202222222212222220102200122222222220222212222222022222222222222222222222222211222211122222221222222022222222221222220222222222222222222222122222222221212022222212222221122220122221222220222202222221222220022222222122222222222222222120022222222222201022222222222222221222022222222222222222222222222221202022222212222220122220022222222222222212222221122221122222222222222222222200220021022222222222201122212222221022220222022222122222222222222222202220212222222212222220012222122222222222222222222222122222122222222022222222222210220000022222222222212222222222220002222222122222122222222222222222212221222112222202222220102201222222222222222222222221122222222222222122222222222201221120222222221222201022212222221112222222222222022222222222222222202220202112222112222222112201122220222221222212222221022220222222222022222222222222221102222222221222222222202222221122220222222222222222222222222222222221212002222012222220202010222221222220222222222222022222222222222022222222221210222002222222221222202122212222220002220222222222022222222222222222202221222022212002222222022010122222222221222212222222122220222222222122222222222200221100222222221222221122202222221112221222222222222222222222122222222220202022202022222220012221122220222220222222222220122221122222222022222222222222222110022222220222210222202222221112220222222222222222222222122222212220212222222212222220112201222220222221222222222220222220222222221122222222222202220201222222220222200122212222220022222222122222122222122222222222212220222002222022222221122120222222222221222222222220222222222222221022222222221211221120022222222222211222102222222202220222022222022222222222222222202222212212212212222220202101002222222221222212222220022222222222202022222222221202220200122222222222221222012222221002222222122222222222022222022222222220222012222022222222202021012221222222222202221220122222222222211122222222220201222120222222220222200122212222222012220222122222122212222222122222212221212022212122222220122202212222222222222212220221022220022222202022222222221202222002022222221222220222002222222222221222222222222212222222022222202220222022222002222221202111212222222220222202221222222221022222210022222222220202221212222222220222220022002222220112222222022222122222222222022222202222202102202222222221022211102222222222222222221220222222122222220022022222220221221010022222222222222022012222222022220222222222022202222222022222222221202212222002022222112122102220222220222202220222122222122222200122022222220210220211102222220222221122012222222222222222222222222202222222222222222220222022202001222220202211202220222222222212222221222221022222221022122222222201220022222222222222211122122222221022220222122222222212022222122222222221222212222001122220202021002221222220222202222212122222222222212122222222220212222212122222221222220022222222221022220222122222222202222222122222222221202202222021022221012210012221222222222202220221122221222222220122122222220201221210002222220222220022022222220222221222022222122202122222222222222220222122202111122222212122022222222221222202221202022221122222201222022222220211220211022222220222222122002222222202222222222222122222022222122222212222222012202211122220222020002222222022222212220220122222022222200022022222220202222202012222221222211222122222222012220222122222122202221222222222202220212012212220022222112120222220222022222202220202022221022222220122222222222200221111102222221222211122022222222120221222122222122222120222222212212220222002222120222220012220222222222121222222221222222222122222200122222222221201220111112222222222201122212221222110221222222222022212121222122222222221222022202200022020122100212222222220222222220221222221222222212220022222220222220121002222222222222122202220221010222222222222120202122222022202222220202022202102122021202200002221222221222202220220222220222222222021122222220211221020202222220222211022222220222012221222222222122222120222022222202222212212212121022222102020212220222222222222221211222220222222222222222222221220221000202222220222210122012221221100221222222222221212122222222212222221202112202220222221022012212221222021222222220220122220122222221021122222222211221112022222222222211022002220220001220222222222120222221222122222212222212112222102122020002120012220222021222212222220222221022222200120122222220200220111222222221222220022102220222121222222022222120212120222222202202221222122202101222020022110102220222221222222222201222222122222201220122222220212221001112222212222202022012221221000222222222222222202222222112222212220202022212122022220112212122221222122222222220202122221022222221021220222222221222010212222211222221122002220222011221222022222121222221222122222222220202022222011022020112120102220222220222212220221222221022222200021021222220212221112122022202222200022102220221120220222122222020202021222012212212020212122202012122120112102022222222221222212221211022220222222220222222222222220220000212022212222220222102221222210222222022222120212121222012202212222202002202211222222022202002220222022222212221200222221222222222022222222222222221022012122212222211122112221220021221222122222121202122222212212222120212212222111222122002011202222222021222212221222222222222222200120220222221220220112222122212222212022022221221111220222022222222212121222002212222121202222202200022022022200202222222122212212221220222220122222200121020222222200221220122122212222211022022221222022221222222222220212220222002202222121202112212220222221002220112221222222222222222222122220222222200220022222222202222012012122221022220122202220222122221222022222022202021222222212222221212102222010022121102202122222222220212212222200122222222222212022021222222222220102002222202222212022101222220211221222122222020212020222102212222020212022202212122120112022022220222122222202221220020220222222200021120222221211220022002202200122220022101222220212220222122022021212220222002222222120212112202212222121122001212221022122212212221202021022122222221221021222220201210001002102200222212122121222220121221222022022022222021222102212222221222122202001222200222212022222022022212202221211220121222222221022122222221220200202102112221222200022210220222110221222222222021212022222012222212020212202210101022212112222222221022020212202221200222022222222222122121222221202211122112222221222222022211220220021221222222122221222022222202222202020202202221120021111012110212021022121212212222210020021022222221220021222221220212012212112202022222222220222221220222222022022221202221222102212212020212122222102020220122111122220122122222222221201122122122222220120122222222221120210012222221122202022010220222011222222022022021202021222212222202022202222220012121120002100212122122121222222220212222122122222220220122222220201120221022202201122202222220022220212221222022122221222221222002222202022222102212102120021102022012021222021202222222212122221122222222021220222222212222022122112212122222022022021222222222222222122122222020212122202222222222112221110222002122022002121222021212202220202122121122222221022021222221220211020212112201122201122021220221120120222222122020222120222112212202222212202202100222120002111202120122120202202222220021200222222211220221222221221100011222222201022212222100020011010121222120222222202221212002210202222202112220011002210122100222220122122202222220212021122122222202222122222220201201221202012221222221122212022211010120222220222021212221202022200222020212022210021212201102212221022122221212212221201120000022222201021222222222210110112202012221022201122222120120111222222221022120212021202212202222220202202210021112210102000200220022220202222220211122121122222202221020222222211201211102222222122201122210120001220121222021022221202222202102200212021202002210021111121102111210121022221202202221210021221122222200022220222221210210220002002212122212122002220100020221222021122220222022212202211220121212022222010012001012110211222222121202222221201022120122222222022220222221210220100112112202122202022121020121220122222221222221222221002012211201022222202221102012212112220011020222222212222220200122001022222202122221222220222100012222002201122101222121121210220122222122122121212121102112211220222202122210110012111022210112222022222202222221202220000122222201120122220222202021120112122222222102122002220012010121222221222021222022222002220211020202202221001220010022000221021022021222222201210122122222222222120121221221201022101202102212222120022021201020101220222020022120212222212222201211122222202220100211001212212202021122121202202221222220101122222222021120222222202122101202112200022102022121211222202220222220222222212220212202221221020202002212010122000022011120222222020202212212210021010222222222222122220221200122212012202220122120222212211222000220222022122221222220002202220220121212102220111000211012112112222122120222222221220221110222222210221122221221201211000002212222022122122122201202021222222121122122212121122022200222022222022222200102102222200221120122221222202200200121021222222200222122221222222112221222012202022110022202021201010021222121122021222222102202200201020222002212200022000102100120021122222202222201212220220122222200222121220220222102202202112201222110122112222111202020222122022122202120102112211221220202202211112210111122120110020122222222202210212022202222221212120022200221202100201202202211022110122220211021102020222121022222212221102022202210222202112220110001012102211110021022220222212221210122210122220210120221220220222001201002102222222120122222210100010222222021122122212121202212201210020202012212221000122002212022121022020212212200211022112122222220222022221222212001112022122202122120022002102121220120222020022120212220222202202200020212120200000202221002011211020022020222202221200220022122220201020020220222222202022102212201022121222010021121200020222122222022222122012022202212120202112220122011221222002211122122220200222202212022200022222222120121221222211210021112012200022201122210221022122022222221002222222021012222211220121202002201111120010022120002121022020222212221210222112022222210122221222221021220020102102210222100122120121220222121222020202221222020112112212202021222212202121010011222001001120102122212212220212021200122222210121020202222002012122212002222022100122220110020120122222222002020222021212212200210222202011221101002200112021122120222021202202220202222120122221220021021220222211101022102202102222100222120212210122020222021102022222122202222210202122012101210021100021102201221222002122220222200220021021222220210120222211222101010021122012020022020222112110012110122222220022120222022112022221202122022201222210221002002002222021122221210212221222221202021221222122222221220210110000122122211112011022011200121202221222020222121201022112002222200221212222222221010122122211210220202122212122200211221021021201201021120211221022121011222102121112101022001212000011122222122212022212122102122202202001102222212010002122212112022020012120222202221202020120020220221120122202221010201122022212221012202222021121201101022222222212020210222122022221210222012010221111010022102001000220022120220112212210122120222222201020122202222120012002212011121222012022002222201120221222122122221200120202212202212212022120212220102220002212000022012122222212210212221220222212202220221220221102020002022022122002111022100000021102120222120202222222222122012020222121112100221221012101102200222222002222210122222201021022021222221022220220221200020121012002222212211222220222010010221222120212222211020122002101200202212122200212001010002112122021012021211112220200120112122211212020220201220210101220102112122212002022102222011102022222020102122122122002112100212111002002202210212020102022112222112222222002212221121122022201210020220222221001211101102121000112220022212200011202020222222002222221222112002200200000102002210010020210002002021222102221202012222210122202122212210120222220221220120210212100201112122022121202222111222222221112121211222122122000212120122120201022202100022010122022222121221102221210222120122222201222021210222022010202222012121202121222210212221121222222120222122222021202022211122200122002202022012211002210110022112222200122201211120212122002202222122222220101200200202110011201001022022121212212122222021102122210121222102010001010222011201100010020112100210020012020212222220221221020020020221122220212221211220110101122100021100222122021021210122222022102221001121222212110220121222002200022211211112110221021202221221112200202120112022200200120222221221111111110221122202020220122120020122221121222020122222101122002122221220211202211201121110212022122201020002121211120212201221202020121210020020210202201220000100001100201100122011110201201020222021202021020222202012201200020022000220010020111222000010020122121211222200210021022022200211122222200210102220111010001211111011122220002200211020222120022221011021002222100121201212002201001212210122111220022022021201012220212121022122011200221022220220201112210221212011012020020202011111110220222022222021121022210222121001021102102220211222211212220221221202222211011210212121122021011202121120222222110022212022110221020210121121101101101222222120022122112121201012122222112022222220202102010022211222022212022220001222200222210221112212121022221202022102002220002122200121120111100012210222222121102022112122112102100012020022021222010221020112011121221102221222222210200021121022122201122122211210022202000110120220112021021001010121021021222121022021111222202012002122120022201202122101111212002211021122121201210101111112011211112022210211122020112121120201101000001002011021101101012001101101000101112201110220000200000000222000010102000120121221201211012020 diff --git a/src/2020/day8/README.md b/src/2020/day8/README.md new file mode 100644 index 0000000..d31f59e --- /dev/null +++ b/src/2020/day8/README.md @@ -0,0 +1,47 @@ +--- Day 8: Handheld Halting --- + +Your flight to the major airline hub reaches cruising altitude without incident. While you consider checking the in-flight menu for one of those drinks that come with a little umbrella, you are interrupted by the kid sitting next to you. + +Their handheld game console won't turn on! They ask if you can take a look. + +You narrow the problem down to a strange infinite loop in the boot code (your puzzle input) of the device. You should be able to fix it, but first you need to be able to run the code in isolation. + +The boot code is represented as a text file with one instruction per line of text. Each instruction consists of an operation (acc, jmp, or nop) and an argument (a signed number like +4 or -20). + + acc increases or decreases a single global value called the accumulator by the value given in the argument. For example, acc +7 would increase the accumulator by 7. The accumulator starts at 0. After an acc instruction, the instruction immediately below it is executed next. + jmp jumps to a new instruction relative to itself. The next instruction to execute is found using the argument as an offset from the jmp instruction; for example, jmp +2 would skip the next instruction, jmp +1 would continue to the instruction immediately below it, and jmp -20 would cause the instruction 20 lines above to be executed next. + nop stands for No OPeration - it does nothing. The instruction immediately below it is executed next. + +For example, consider the following program: + +nop +0 +acc +1 +jmp +4 +acc +3 +jmp -3 +acc -99 +acc +1 +jmp -4 +acc +6 + +These instructions are visited in this order: + +nop +0 | 1 +acc +1 | 2, 8(!) +jmp +4 | 3 +acc +3 | 6 +jmp -3 | 7 +acc -99 | +acc +1 | 4 +jmp -4 | 5 +acc +6 | + +First, the nop +0 does nothing. Then, the accumulator is increased from 0 to 1 (acc +1) and jmp +4 sets the next instruction to the other acc +1 near the bottom. After it increases the accumulator from 1 to 2, jmp -4 executes, setting the next instruction to the only acc +3. It sets the accumulator to 5, and jmp -3 causes the program to continue back at the first acc +1. + +This is an infinite loop: with this sequence of jumps, the program will run forever. The moment the program tries to run any instruction a second time, you know it will never terminate. + +Immediately before the program would run an instruction a second time, the value in the accumulator is 5. + +Run your copy of the boot code. Immediately before any instruction is executed a second time, what value is in the accumulator? + + diff --git a/src/2020/day8/aoc.cpp b/src/2020/day8/aoc.cpp new file mode 100644 index 0000000..849bad9 --- /dev/null +++ b/src/2020/day8/aoc.cpp @@ -0,0 +1,5 @@ +#include "aoc.h" + +namespace aoc2020 { + +} diff --git a/src/2020/day8/aoc.h b/src/2020/day8/aoc.h new file mode 100644 index 0000000..c5ad3d1 --- /dev/null +++ b/src/2020/day8/aoc.h @@ -0,0 +1,6 @@ +#pragma once +#include "common.h" + +namespace aoc2020 { + +} diff --git a/src/2020/day8/input b/src/2020/day8/input new file mode 100644 index 0000000..debe3fd --- /dev/null +++ b/src/2020/day8/input @@ -0,0 +1,654 @@ +acc +28 +jmp +481 +nop +87 +acc -10 +acc +21 +jmp +548 +jmp +250 +acc -9 +acc +19 +acc -3 +nop +85 +jmp +84 +acc +43 +acc +34 +acc -5 +jmp +602 +nop +416 +acc +19 +acc +46 +acc +33 +jmp +133 +acc -3 +acc +5 +jmp +143 +nop -18 +acc +50 +acc +0 +acc -6 +jmp +243 +acc +11 +acc -18 +jmp +501 +acc +45 +jmp +449 +acc +0 +acc -10 +acc +20 +nop +516 +jmp +544 +jmp +551 +nop +59 +nop +247 +acc -1 +jmp +589 +acc +41 +jmp +457 +jmp +102 +acc +22 +jmp +195 +acc +30 +jmp -38 +acc +21 +nop -3 +jmp +466 +acc +47 +acc +4 +jmp +226 +jmp +404 +acc -19 +acc +13 +acc +37 +acc -6 +jmp +240 +nop +272 +acc +41 +acc -12 +acc +41 +jmp +159 +acc +26 +jmp +363 +acc +33 +jmp +1 +jmp +76 +acc -15 +acc -6 +jmp +1 +jmp +259 +nop +149 +jmp +1 +jmp +20 +acc +31 +jmp +131 +acc +47 +acc +18 +jmp +355 +acc +9 +acc +42 +jmp +28 +jmp +138 +acc +29 +acc +7 +nop +270 +acc +6 +jmp +445 +jmp +282 +jmp +266 +acc +30 +nop +283 +jmp +134 +acc -16 +acc +50 +acc +30 +jmp +344 +acc +25 +acc +42 +acc -8 +jmp +274 +acc +27 +acc +33 +acc -18 +acc +21 +jmp +448 +acc -7 +nop +342 +jmp -65 +acc +43 +nop +407 +nop +122 +jmp +170 +acc +34 +jmp +1 +acc +1 +acc +11 +jmp +436 +acc -1 +jmp +346 +jmp +250 +acc +17 +acc +21 +nop +482 +jmp -90 +acc +45 +jmp +244 +acc +29 +acc +23 +nop +241 +acc +34 +jmp +168 +acc +28 +acc -6 +jmp +299 +nop +441 +jmp +304 +nop +41 +acc +49 +acc -18 +acc +7 +jmp +244 +acc +45 +jmp -95 +acc -9 +acc -18 +jmp +14 +acc +35 +acc +47 +jmp +297 +acc +34 +acc +33 +jmp +1 +jmp +210 +nop +128 +jmp +305 +acc +29 +acc +17 +acc +47 +jmp -24 +nop -86 +jmp +97 +acc -7 +acc +14 +nop +118 +jmp +411 +acc +42 +acc -8 +acc -15 +jmp +232 +jmp +1 +acc -6 +jmp +20 +acc -15 +acc +3 +acc +50 +jmp +1 +jmp +430 +acc -18 +acc +35 +acc +46 +acc +1 +jmp +51 +acc +13 +nop +209 +jmp +114 +nop +319 +acc +35 +jmp +194 +acc +6 +acc +42 +jmp -44 +jmp +1 +nop +208 +acc -13 +jmp +412 +acc -12 +nop +327 +nop -27 +acc +34 +jmp +324 +acc +21 +acc +16 +jmp +273 +acc -14 +jmp +363 +acc +4 +jmp +140 +acc +6 +acc +28 +jmp +110 +jmp +432 +nop -20 +acc +4 +acc +1 +jmp +392 +jmp -164 +acc +23 +acc +10 +jmp +57 +jmp +385 +acc +5 +acc +28 +acc +25 +acc +0 +jmp +251 +acc -17 +jmp +38 +nop -2 +acc +35 +acc -3 +acc +40 +jmp +123 +acc +19 +jmp +271 +acc -7 +jmp +40 +acc -7 +acc +0 +acc +46 +jmp -161 +acc +33 +acc +1 +jmp +341 +acc -12 +acc +45 +nop -145 +jmp +116 +acc +49 +jmp +20 +jmp -34 +acc +41 +acc +35 +jmp -132 +acc +45 +jmp +119 +acc +25 +jmp +12 +acc +8 +jmp -15 +acc +14 +acc +43 +acc +17 +acc +35 +jmp -98 +jmp -182 +nop +260 +nop +338 +jmp +31 +acc +23 +nop -64 +acc +36 +acc +47 +jmp +318 +acc +10 +jmp +180 +acc +37 +acc -13 +acc -6 +nop -29 +jmp -179 +jmp -5 +jmp +1 +acc +43 +jmp -34 +nop -218 +acc -10 +jmp -5 +nop +67 +acc +9 +acc +47 +jmp -276 +acc +28 +nop +260 +acc +38 +jmp -280 +jmp +303 +acc +42 +jmp -209 +acc -2 +acc +13 +acc -1 +acc +43 +jmp +244 +acc -15 +acc +47 +jmp +149 +jmp +1 +nop +233 +acc +14 +jmp -287 +jmp -110 +acc -12 +jmp -159 +nop -94 +jmp -188 +nop +20 +jmp +53 +nop -64 +jmp -296 +acc +20 +jmp +134 +acc +8 +jmp +47 +acc -15 +jmp -37 +acc -14 +acc -15 +jmp +163 +nop -22 +acc -3 +jmp -210 +acc +37 +acc -11 +nop +179 +jmp -193 +acc +27 +jmp +81 +acc +46 +acc +21 +jmp +93 +acc -9 +nop -131 +nop -177 +jmp -173 +acc -19 +jmp +55 +nop +16 +acc +45 +acc +10 +jmp +83 +acc +15 +acc +17 +acc +28 +jmp -121 +nop -19 +acc +47 +jmp +184 +acc +45 +acc +15 +acc +6 +acc -3 +jmp +164 +acc +1 +acc +30 +nop +226 +acc +20 +jmp -339 +nop +223 +jmp +266 +acc +0 +jmp -253 +acc -8 +jmp -26 +nop -326 +nop -106 +jmp +73 +acc +2 +acc -7 +acc +4 +acc -1 +jmp -61 +jmp +186 +acc -14 +jmp +221 +nop +111 +acc -7 +acc +46 +jmp -345 +acc +2 +nop -212 +acc +23 +jmp -159 +nop -258 +acc +3 +acc +40 +jmp -142 +acc +49 +acc +27 +acc +45 +jmp -214 +acc +1 +acc +5 +acc +23 +acc -7 +jmp +119 +nop +201 +nop -215 +nop -197 +jmp +115 +acc -9 +acc +38 +jmp -211 +acc +40 +acc -1 +acc +16 +acc +35 +jmp -70 +acc -18 +acc -10 +jmp +93 +acc +14 +nop -216 +acc -12 +nop -223 +jmp -342 +acc -19 +acc +43 +acc -6 +acc +11 +jmp -106 +acc +2 +jmp +73 +acc +48 +acc +20 +acc +18 +acc +44 +jmp +162 +acc -7 +jmp -202 +acc -2 +acc +34 +acc -17 +jmp -443 +acc +40 +jmp -129 +jmp -181 +acc +30 +jmp -400 +acc +42 +nop -185 +acc +34 +acc -5 +jmp -275 +jmp -406 +acc -16 +jmp -270 +acc -4 +acc +40 +jmp -299 +acc -7 +jmp -76 +acc +10 +acc +11 +jmp -4 +acc +0 +acc +33 +acc -8 +acc +8 +jmp +166 +nop +62 +jmp +1 +nop +13 +jmp +23 +jmp -167 +jmp -469 +acc +32 +nop -403 +acc +7 +acc -3 +jmp -345 +acc -9 +acc -2 +acc +48 +jmp +57 +acc +9 +acc +3 +nop -32 +acc +25 +jmp -177 +jmp -369 +nop -167 +acc -9 +jmp -453 +acc -6 +jmp -360 +acc +11 +nop -457 +acc +50 +nop +121 +jmp -231 +nop -83 +acc -4 +nop -253 +jmp +28 +acc +29 +acc +0 +jmp -11 +nop -373 +acc -19 +acc +26 +acc +0 +jmp -7 +jmp +71 +acc +18 +acc +50 +jmp -234 +nop -399 +acc -7 +acc +32 +jmp -294 +nop -481 +acc +8 +jmp -113 +jmp -183 +jmp -333 +acc -7 +acc +10 +acc +31 +jmp -501 +nop +75 +jmp -219 +acc +2 +acc +43 +acc +19 +acc -2 +jmp -443 +acc +16 +acc +6 +acc +40 +jmp -461 +jmp +79 +acc +32 +acc +20 +acc -7 +nop -71 +jmp -498 +jmp -231 +acc +37 +nop -526 +acc +38 +acc +41 +jmp -509 +acc +26 +acc +45 +acc +33 +acc +37 +jmp -410 +nop -289 +acc +46 +acc +39 +jmp -44 +jmp -169 +jmp +1 +acc +33 +jmp +1 +acc +39 +jmp -446 +acc -9 +nop -187 +acc +41 +jmp -444 +acc +20 +acc +9 +nop -500 +jmp -43 +acc +23 +acc +28 +acc +35 +jmp -94 +acc +47 +nop -514 +acc +38 +jmp -577 +nop -31 +nop -348 +acc -18 +jmp -202 +nop -162 +nop -373 +jmp +45 +acc +45 +acc -16 +acc -15 +jmp -532 +acc +29 +acc -14 +acc -11 +jmp -509 +jmp -279 +acc -18 +acc +42 +acc +12 +jmp +1 +jmp -450 +jmp -88 +jmp -505 +acc +0 +jmp -397 +nop -438 +jmp -86 +acc +14 +acc +27 +nop -66 +nop -278 +jmp -548 +acc +19 +nop -305 +nop -440 +jmp -441 +acc +35 +acc +36 +acc +45 +jmp -505 +acc -8 +jmp -313 +nop -517 +acc +38 +acc +12 +nop -511 +jmp -354 +acc +29 +acc -7 +acc +29 +jmp -201 +acc -2 +acc -3 +jmp -75 +acc +24 +acc -2 +jmp +1 +acc +19 +jmp -58 +nop -432 +acc +1 +acc +33 +acc +1 +jmp +1 diff --git a/src/2021/day8/README.md b/src/2021/day8/README.md new file mode 100644 index 0000000..a98cb6e --- /dev/null +++ b/src/2021/day8/README.md @@ -0,0 +1,73 @@ +--- Day 8: Seven Segment Search --- + +You barely reach the safety of the cave when the whale smashes into the cave mouth, collapsing it. Sensors indicate another exit to this cave at a much greater depth, so you have no choice but to press on. + +As your submarine slowly makes its way through the cave system, you notice that the four-digit seven-segment displays in your submarine are malfunctioning; they must have been damaged during the escape. You'll be in a lot of trouble without them, so you'd better figure out what's wrong. + +Each digit of a seven-segment display is rendered by turning on or off any of seven segments named a through g: + + 0: 1: 2: 3: 4: + aaaa .... aaaa aaaa .... +b c . c . c . c b c +b c . c . c . c b c + .... .... dddd dddd dddd +e f . f e . . f . f +e f . f e . . f . f + gggg .... gggg gggg .... + + 5: 6: 7: 8: 9: + aaaa aaaa aaaa aaaa aaaa +b . b . . c b c b c +b . b . . c b c b c + dddd dddd .... dddd dddd +. f e f . f e f . f +. f e f . f e f . f + gggg gggg .... gggg gggg + +So, to render a 1, only segments c and f would be turned on; the rest would be off. To render a 7, only segments a, c, and f would be turned on. + +The problem is that the signals which control the segments have been mixed up on each display. The submarine is still trying to display numbers by producing output on signal wires a through g, but those wires are connected to segments randomly. Worse, the wire/segment connections are mixed up separately for each four-digit display! (All of the digits within a display use the same connections, though.) + +So, you might know that only signal wires b and g are turned on, but that doesn't mean segments b and g are turned on: the only digit that uses two segments is 1, so it must mean segments c and f are meant to be on. With just that information, you still can't tell which wire (b/g) goes to which segment (c/f). For that, you'll need to collect more information. + +For each display, you watch the changing signals for a while, make a note of all ten unique signal patterns you see, and then write down a single four digit output value (your puzzle input). Using the signal patterns, you should be able to work out which pattern corresponds to which digit. + +For example, here is what you might see in a single entry in your notes: + +acedgfb cdfbe gcdfa fbcad dab cefabd cdfgeb eafb cagedb ab | +cdfeb fcadb cdfeb cdbaf + +(The entry is wrapped here to two lines so it fits; in your notes, it will all be on a single line.) + +Each entry consists of ten unique signal patterns, a | delimiter, and finally the four digit output value. Within an entry, the same wire/segment connections are used (but you don't know what the connections actually are). The unique signal patterns correspond to the ten different ways the submarine tries to render a digit using the current wire/segment connections. Because 7 is the only digit that uses three segments, dab in the above example means that to render a 7, signal lines d, a, and b are on. Because 4 is the only digit that uses four segments, eafb means that to render a 4, signal lines e, a, f, and b are on. + +Using this information, you should be able to work out which combination of signal wires corresponds to each of the ten digits. Then, you can decode the four digit output value. Unfortunately, in the above example, all of the digits in the output value (cdfeb fcadb cdfeb cdbaf) use five segments and are more difficult to deduce. + +For now, focus on the easy digits. Consider this larger example: + +be cfbegad cbdgef fgaecd cgeb fdcge agebfd fecdb fabcd edb | +fdgacbe cefdb cefbgd gcbe +edbfga begcd cbg gc gcadebf fbgde acbgfd abcde gfcbed gfec | +fcgedb cgb dgebacf gc +fgaebd cg bdaec gdafb agbcfd gdcbef bgcad gfac gcb cdgabef | +cg cg fdcagb cbg +fbegcd cbd adcefb dageb afcb bc aefdc ecdab fgdeca fcdbega | +efabcd cedba gadfec cb +aecbfdg fbg gf bafeg dbefa fcge gcbea fcaegb dgceab fcbdga | +gecf egdcabf bgf bfgea +fgeab ca afcebg bdacfeg cfaedg gcfdb baec bfadeg bafgc acf | +gebdcfa ecba ca fadegcb +dbcfg fgd bdegcaf fgec aegbdf ecdfab fbedc dacgb gdcebf gf | +cefg dcbef fcge gbcadfe +bdfegc cbegaf gecbf dfcage bdacg ed bedf ced adcbefg gebcd | +ed bcgafe cdgba cbgef +egadfb cdbfeg cegd fecab cgb gbdefca cg fgcdab egfdb bfceg | +gbdfcae bgc cg cgb +gcafb gcf dcaebfg ecagb gf abcdeg gaef cafbge fdbac fegbdc | +fgae cfgab fg bagce + +Because the digits 1, 4, 7, and 8 each use a unique number of segments, you should be able to tell which combinations of signals correspond to those digits. Counting only digits in the output values (the part after | on each line), in the above example, there are 26 instances of digits that use a unique number of segments (highlighted above). + +In the output values, how many times do digits 1, 4, 7, or 8 appear? + + diff --git a/src/2021/day8/aoc.cpp b/src/2021/day8/aoc.cpp new file mode 100644 index 0000000..7a3c895 --- /dev/null +++ b/src/2021/day8/aoc.cpp @@ -0,0 +1,5 @@ +#include "aoc.h" + +namespace aoc2021 { + +} diff --git a/src/2021/day8/aoc.h b/src/2021/day8/aoc.h new file mode 100644 index 0000000..cd205cd --- /dev/null +++ b/src/2021/day8/aoc.h @@ -0,0 +1,6 @@ +#pragma once +#include "common.h" + +namespace aoc2021 { + +} diff --git a/src/2021/day8/input b/src/2021/day8/input new file mode 100644 index 0000000..fd3d8ec --- /dev/null +++ b/src/2021/day8/input @@ -0,0 +1,200 @@ +caebgd dagc eabgd aebfgc fbdacge edg dg dbgcef eabfd cgeba | gbcdae dagc acgd gd +fgcbed bcedga cafb acgfd cgabd cgf dfaeg dfbcga bceagdf fc | cf gdfea fdagbc dfacg +gaed egcbdf edagcf fcaegdb facge afg ga ecbaf fgced fgdabc | cgeaf gfa ga efbac +cbdeg cbgeadf cgdfa cgdbae decgf efg cebf egbfdc fgbead ef | fge gfe dcegabf gdcfe +bacd cgdbe ecgbf cd cde degba cfaegd gfadbe gbdace baegcdf | cfgdea dce bacd cabd +gdbafc cedagb cebga bc edcb gbdefa cebgdaf agfce acb bgdae | afgedb bdce dabeg dbec +fadce bad edafbc cgbfa edcagf dacbge dfabc bgecadf edbf bd | efbd baegdc dab db +fcaed eb afcdge cfbae gacbf edab becgdaf gcedbf efb bdecaf | be gadbfec eb cedfa +cdgbea ebcga feacb age ge afcdgb faegdc acbgd agcfdbe bdeg | gedcab dcagb gea edbg +eda bgeaf eabdcg ad ebgdacf egdfac ecdbfg dcfge acdf dagfe | ad ad da beagf +cegfa bf ecfabd fgcb egcafd ebfga bgade afb eagbfc dgfbeca | bcegaf fcgb adgbe bcgf +fegacb dbagc gdcae fbcd bc dfbgca gdbfa cgb adefbg ecdabgf | cgb fbgdac cabfdg acdeg +gfbead cfbgea cfeb bf agcfb baf cdgaf begacd aebcg acgdfbe | fab gdcbeaf afcbeg bfa +df acgbf bedag gecbdf dgefacb fdagb gfadeb fbd abgecd efad | bcafg cafdgeb bdf fd +defbc dg gadc caebdfg bceagf gecba adegbf ebagdc gecdb dbg | bfgdea aefbdcg dgb dbceg +cegbd cafegb gedcab gcebdf ecdf dfbag fbgde ef efg fbaecgd | fedc ef fdec ebagcf +dbfag gabdcf dfgbeac efdcag gbcfe ed efbadg efd bade efbgd | bagfd def ed efgbda +gafbcde gfbdc fc geafbc cgf ecdfgb cfde dbgac gdfeb gedabf | fced gfc cdbag gfc +ef adbefg efdbc cfabd fcea fbe cebdg cbfgda abecfd dagbefc | degcbaf ef fecdagb dafebc +acdbf abefgd ea dgcfe acedgf agec faedcgb afe gcbdfe fecad | geca gebadfc fgeabcd efdca +agfecd acbg aefdb bg gdcfa gdafb cebdagf gfb dgcafb cgbefd | fbg dgafc fbg bafdg +db ebafd dcafeg bcedag eafgb bcdf ecafd adb eabdfc cdbgaef | bgafe dfbea bd daefc +egfacd cegfa afbdg facgbe de dfegbc cdae edafg egd ecdfbga | edg defcga aegfc de +abdgfce begca egcbf ag gdafbc afge fbdcge daecb cefabg cag | gbfced ga cgedbfa ag +faed abcedf eafdbcg aebcf cbagf cgebda ef fbe cbgfde bdcae | afbcg dafe fbe fbe +bcea cfdae dcafeb ab cfbdg dgeabf afbcd baf fdacge gacfdbe | baf decgfab fab abce +dbeacg agefcd agbefdc cagfe ae aeg aedf gdafc bfceg bacdfg | gea begcf fdcage ea +cagdeb ca bcfgad badgef cbaf cgbefad adc fcdga gdfec bfagd | aecbdfg afcb ac bcfa +bc begda gebfcad bfcd dbeac abdfce dcafe cbe cafdge bgcfae | bcdf ebdga gbfecda bce +dfacgb edbcg gfedab egfab bac begac fcea ca dgfcabe ebacfg | bac cba bgcde ca +fgacbe dgeba agebf afb fbcaed eafcgd fb dfegacb bgfc cfgea | cfegabd ceafg bf cbadef +fgcab ceabdgf fdabc da gdabcf gdcaeb ecfbag fadg cdbef acd | fagd gfad fcbgae adgf +afbgecd cedga cdfb ebgdcf gbfade bcfeag cedgb efgbc bd gdb | fedbcg cefdbg edcag dgb +bfcga gfadb egcadf cbeagfd bdfeag bcfegd bd edgaf dbae dfb | bfgadec dfb bfd cbfga +cbegad bacde eafdb bcgea cad cfgadb cd gced fgedcab bfecag | fdgbeac eacbdfg acdbe abdfe +cebaf dcegbaf edfgab cabgfe bafeg cgaf aegbdc cea febdc ca | ac ac ca cfga +db bfd ecdfg febdc debfac egdfab cadb efgacb defacgb bcfae | edbcagf bd debfac fdb +egfdcab dcgbe dacgef fbad bafcge ab degfa ebfgad gbdea gab | ba fabgecd ab agedbf +afbc efadc efcgabd dfbeac ac bdgeac cfgbed afgde cfdbe dac | ac fegcdb afedc facb +acbde cgfdea cdbge cfbdea abd ab gacbdfe fdcgab acefd fabe | fbae dagefbc aefbcgd dba +cedbfga dabecf afbge fab ecbfdg gedfba fbgde cbeag dfag af | beafg acbfed fa gdaf +ecbgfa eab agdfebc adbg gdfbe dfgecb dabfe afced bagfde ab | bdag gdba dfbge gbda +egfdac eadbg gfdab bcdega ae egabdfc cdfbeg dae gcbed bace | dgbefc gadefc ea eacb +bgacf dgfcea cbfgeda fdab fa fag fbgadc gcbef cdabeg bcgda | gfa fag afg aedcbg +egafdcb dcega dgfbc egdbaf ebdcg dbe eb cabdeg ceab fcdaeg | bed edcfag gadefc fcdbg +dgcab afgb bcg dcaeb dbgcaf bg ecfdgba gafced fbcdeg cfdga | cefgdb gacfbed afdgc gbcdfa +cgeda bafcg cgdfa dgfcae bceagd bdgface adf fd feabcd efdg | edfg gdeca cgbdfae dcfgaeb +dbefga eadcgb gbaedcf daebc geadc bd bcgd bafec bad gaecfd | edagc abcef fceba aecdg +bcegf cfbega bgedca befca gabecdf bgc gfca gebdf cg dcfabe | efdbg bcg acgf fecbadg +gfcdeba dbaec ecgaf gde agedfb bcafeg gdfc dgeac dg cadefg | egfca fegac edg daebgf +bea geadbf be efcad afecgb adfcbg cbefa fcabg gecb egbdfca | eab cbfae gbcafed cbeadgf +adgfec bgea fbcdg be fdceba bgedc edb acged bfdceag dgbcea | decfba efcdba gbdface aedgfc +ebgfc dcb dc ecfd fecbgd debcg bgfacd defcgab bacgef dgabe | dc adfbceg befgc cfed +cbgdea gafc fcegd eagdfb bfdce egc efdag gdafec cg gfbceda | cg ceg dgfea cg +fgdab egacbfd decgaf eaf edcfgb ea efdcb aefcbd eadbf abec | fdbea ea acefdb ea +bdegcf aegfb eacd ec acfgd gfdeca fce adcfbg begafdc gcaef | acde gbefcd adce fec +cdgfbe fdacg cegdf cebd cbeafdg efgcb aegcbf bgfead efd de | fcegdba cbde gbcadfe fed +adfge efgbda gacfde gecfba ce feacd adbfc cgde fce dfabgce | fgcaed cgde gfaced fdeac +ga cgaefdb dcebfg fbegac gbda acdef cdgeb gbaedc ecadg cag | bagd bgfdce cbgde dbfaecg +gec efdabg bfgdcae dfebc agbc aefbg afgbce agecfd cg cegbf | acfdgbe cbdef abcg afbedcg +ebcgaf cagdf afbdeg fbcda dcfbeag beacfd befca bfd bd cebd | dfb dbf feacbg gfdaecb +ecgdfa afe gbafd bfgdac ae decbf dgebaf afbed abeg cedabfg | egab cgeabfd eadgbfc ebag +agcfdeb fdabe gfcaeb edf cegfad badce gdbf fd gbafe fedbga | efd bfgd daecgfb cabefg +bcdef gefcadb fdeba fdega ba bgea bgdafc efbagd dfcgae dba | ba ba edafb ebga +acgbe age ga agebfd afcebg bdegc acfeb fgca cefdba cabegdf | ag eag afgc ag +bacfd feb gfea dabge fegadbc adegbf fe aefdb cbdgae gdcbfe | ef ebdfcg fgdeba efb +efgca fadbc daecgf ecbfgd gd daeg dfcagbe agfdc bafecg dgf | fgd cfeagb afegc dfg +cgeabd cdagf dfab afcbgd dceafbg adgbc cfd df efdgcb afgec | cdf cfabdg abfd df +bgacef acegf adgce cgbfaed dgbec gcdefa afed ad badcgf cda | ad egadc degbfac efcagd +de ceafb bfedacg decf cbeda aed gdefab dfacbe gadcb gecbfa | acefb eda edcf ead +fdebga dgbcef baf af caefb debcf baecg cgdfaeb dafc facdbe | af fdac fgceadb efcba +dgbfac cabdefg ag gda dgcbf gafdb dfaeb bedgcf cafg adcebg | fgadb egfbcad fgca gfbda +egcbfda fagbde cb egbcf fbc dcgb cdbafe fgdbe dcefbg ceafg | bfc gfcebda bcf bcf +cfeba ag fecag feacgb eag defgc egabfd gbcafed agcb bdacef | gcfabe efcadgb ga gabc +fgeadb gbfdace feacb ed bacfde fdbcg edca ecbdf cebgfa def | ebcfa acebdgf efd aced +fcgad aegfdb ea bdfcea dea egfbd aebg cgbedaf begfdc fedag | geba egbfd fdagbe dcbaef +faebdg efbca fadce bgefa fcbgae dbecfag bgcf cb ecb dgaecb | cadebgf ecb gcfb cb +ecdf begca cbagfd ed edb dfebacg cdgfb bcedg cgbfed edagbf | de dfce gedcbf de +badfec dfgcab gdbeafc cbf defc acefb ebdgaf cf abedf egacb | cdfe cdef fedc fc +afcgbd fdcg fbc bgdac acbgef cf fcabd gdebca fbaed fcdageb | cf fbc cf gfcd +cefba dbef fe gdafec dbcae fdebac bfadcge fec gceabd abcfg | gacedb debac bcaed gacfdbe +bagfe db bdf gafdc bfgda cgefbd cafedg fcgabd fdeacbg dacb | gabdf cdgbfa bd egfbdc +dbcaef bacfd begfcd gbafc cedbf da eabd gecdfa cda fbecgda | aedb cda efcdb adcfbe +faebgd afcbdg gf dbacfeg gdf degfa dcfea gebda dgaceb gfbe | bgfe decaf gf edgfa +fg aecgbfd ebcfa efabg adgeb fge egcbdf bedagf dbcaeg fagd | fg dfga gfda gafd +cedgabf dcba ab cedaf bae cabefd fgaced fdaeb fabgec dfgeb | bedfac ab fecbga debfcag +dec ce fcabde daefb fgabde aefc bdagc dcgfeb efcdabg caedb | gadbfec ecfa baefgd ce +egcaf ed adbe afbcd dgfecba acbdgf edf decfab edcaf egbcfd | dgecfab eabdfcg fbdaec abed +fea febcg eacgf ecda cdgfa agcedfb edgfba ae agcfde cbadgf | fcegb fgbaced dcafg caed +gebfd ec dec eabc bafcged debgc fecgda fdgabc dcgabe cgadb | adegbcf gbacfed bfgcdea ce +egfdab cad bcgad cd bcfga gfdbcea dgcaeb cedg defbac beagd | cadbfe decg cd cadfeb +cge gadebfc fbcgae gc dagec agdeb dcefga cgdf afbecd ecfda | ebgcaf dbeag fgcdbae dgcf +bdegca ecbdaf bfae cgdfb ebafdgc ba dfabc bac feagcd fdcea | bac ebcfadg ba ab +gceda eab agbfedc eafcdg ab gbac bgdef gacbed dgbea cfaebd | bgfcade ba abgc bae +gbfe eg gcfdeb daebcg bcdef cgefd cdfag fbdeac egcadfb gec | ge befgdc gce egc +bga gbeacd cbgde gdefcab cagbdf ab beda cfbegd aecgf agecb | agfce daeb bead agb +fedgba agecbf bc bcdf cgb febdcg ecgfabd gcade dgbec efgdb | bgedfac cb bc bc +gfaeb bcdfe cea gfca bdacge aecbdfg fegbca ac dfgbae caefb | cfga agcf cfga cbgade +cgeab fbegda adb dagbfec eafgbc bd bgcd adecf cegdba daebc | efbcdag gdcb bd deacfgb +bcagd cbgde gbfad eabdgf cda ceabfd fcag cdgabf agcbdfe ca | ca ca ac cda +agdce dageb eacdbf ecgdaf bafgd dgfacbe dgbaec bceg bea be | gceb bgdcaef edgac aedgc +bceadf adcfeg ga dfag geacd cabegdf ceafgb gca aecfd edcbg | ag acbfde gdfa ag +fdcegb abdfce cdega bgcad gfea cae ae bcafged fagedc fgdec | gfdce bafcde gfcdeb ae +egbcda cebadf bfe ef bedcg bgfda fgec fedbg begcfad gdbcef | bef gcbeda ef ecgf +egfdb cgd gdbfea cgbdf fdcba fgbdaec agbdec cg fecg cgdbfe | abgfedc fbcgd cegf gc +cfbegd ab gbacfd agefd ceab baf acfgdeb eafbgc bfegc bagef | ba abf beca baf +fcega fecda cbgaef fgaedb gbfc geadbc fag ecbdgaf eacgb fg | ecdfa bfgc dgebaf gcabe +aefdcg gfdcab ab fagb dbaegcf adb faecbd gcadb fcgad ebdgc | gadcef bfdaecg fgba fgecad +eabfc cdebf bgfca ecfbgad fbdceg aeb gceabd afde ea cbfade | abcdgef eabfc abe bdcfae +cd dgfceab dec cbegfd gedaf adfgec ecbag fgadbe cadf cgdea | fgedbc edc dce adcgfeb +agcdbf ecdgf adfcg agfcbed ef ecdfab efc agfe cgebd defagc | eadcfb cfdbega cef geaf +cdbafe deacf ga dbecag fecdagb bcfge gfda caedfg gae eagfc | ga eag gfcebad cfgae +ceadfg bdf gfbec adbe fbegd abgdfc bd gdefa gdfeba dgacefb | bagedfc facedgb fbd bd +ecdba ecdagb gcfeda fbdaeg cfedb befcdag ca agedb abcg ace | cea fbaged eca bcag +gfedc gdaf gaefc dcf bgcde gdeafc fcgadeb gecabf cdafbe df | fd gcaef df egfdca +afegb cefgb eadcbg cgfbad dbecg cfde aegbcdf fcb gdebfc fc | fbcged bcf gbced aefgdcb +ca bfeda cae ecdfgb edgcf dgceaf gbaced afcg gbeacdf aefcd | ac dfcebag cagf ace +begcad efdagb fbgeadc fedcba aec abedg fcegb ca cgda abegc | abcfgde fgebadc bagedf gdca +aegb cfeadb acdgf decgbf ecgdb gcfedab bgdcea ba gbdac bad | bgceda gdafc fgadc dafcbe +fgecba aec adfe deacb ae abegdcf bcdag ecbfd gecdbf dafceb | gdcab ae edfa daef +agfde eacg adebfg fdgcb cafdg fgdeca cfbaed ac gcadfbe acf | fca gdfae acge dbeacf +fbagce de deg edfa fcbdg gbdcae aegfb dbgfe dgacbfe gefbad | edfa de ged bdgcf +bacfdg cdeafgb aecbfd daefb agedc afc abdefg cebf deacf cf | gbdafc efbc cfead fc +cegfab cdag bdc dc febad gfdbce dcaefbg gfbac dcafbg cdabf | dgafcb cdag dcbgeaf gaefdbc +dagefb acefg afdcb gd dgfaecb facbgd bcdg gda badcfe fgacd | fbecgda cfadb gbdc fcaeg +gfbd cfeda gabcfe db dba baefg beafd bcgdae fedcbag efbdag | dba bad ebgaf dbegfca +cf fbdega aefbg afbcedg edgca dgbcfe gfaec febcag ecf afcb | aefbg gcaefb dbcegaf cef +gebdaf abgd cdabfe gacefbd agfed dg ged fegac aebfd fbdcge | egd abdegcf gadb afbgde +gcdf efdcb acfebd beagdc gd bdefg ebfcgd bdg fbega geabcfd | dgceba ecadgb adgfbce edbgf +fdcaebg efbdgc bgdacf dcae cbdge gebaf abd edgab da bgaedc | cebagd ad da gebcda +bfgcae cbd bcfea aedcb gbefcd cd adecfb adfc cagdfbe dbega | fcad cdabgfe dacf dcb +becg gfbace egacfbd acbfg acdfgb aec ce bdfea cgedaf fbcea | afcbg fedagc befac aecfgd +befa cgfed cfadb gdcfba acdfe ace edgbac fgcdbea ceafdb ae | feab eacdf bcdgafe bfae +bcdefag dafeg fgec dgeafc gea gdfbca cgdaeb bfdea eg dgafc | eg aefcdgb ecdfag gea +gfadb gedfb bdecgfa adbefg dcgaf abf gdcefb aebg ab bafced | gdbfe gbfed ebag cabgfde +dbegfa acgbdf eg gcfbed gdafb bfacegd ebg aged fageb bacfe | ge gefcdba ge bgdfa +adbgec fdceg afdgc bedf cfe fe gaecbdf faebgc gcbed fcbedg | acfdg gdeabc debf ef +dfgbe da ecbadg dafeg fadb gfdbea dagcfbe dbgfec cfgea dga | befdg agd eafdg fabd +bedc aefbc ceadfb fdb cbagfed fecgab dcfba gaebdf cfagd bd | db bfd bfcae adgefb +cabedgf edbfgc gedcfa bacegf fde dgbf baced fd fedbc fegbc | fcdeb adbgefc adecgbf fde +fged egafc ecafgd efcda dfa dfcabg becfag fd agcdfbe ecdab | dgef fd dgfe df +deafgb gbfdc dg dbg agdc dbcafg cadfb bafced fgbce daegbfc | gbfdac afdgcb dgb gdcfb +dfecb fabdge cegbaf fdca faecb aefcdb bdf gdbce afgcebd fd | dbf fbd edcabgf fadc +cbf egabfdc fdcgba fabecd cf dfagb gfac adbegf cdegb bcfgd | acfg afgbed cgdfab fc +ebdfagc bcfa gecfdb af daegbf fgcbd bcdfag egcda fgdca gfa | fcab gafcdb dbfega acfb +adfbg eacb abfcg ecafbg gface ecfgad bc degfbc cbg gabdefc | cb gabefcd cagfebd agcbfe +ebgad bef gacfe gceadf fb efcagbd eabfcd cegfab gbfc ebagf | cefadg fcgae fgbc ebacdgf +dcg aged efacd cfgdae edacbf edfcg bcagdef gd fecbg dcfbag | cdeabgf gd gcd adge +fecgda cdabefg gabfc gfacbd ecgabf cbafe bcdef ea ace bgea | egba gabe beagfdc fbcag +bacdgf eafbd cagde becad afgcedb bc fbegad cfbe cba fcdaeb | fcbe abc dbecaf edcba +ecbdf dagfceb abcfde cbade aebgc adb bfgead debfgc cafd ad | bad dcaf begac da +gbae deafb fdgbea cegfd ag cdaefb cgabefd degfa dag dfcgab | baeg agefdb bcdafg cbdfga +ebcdf gdeafbc cdgbfe eaf cdfa deafbc gedab aecfbg ebadf af | befacd ebfda af af +cfab dcb gfedbac bc cgaedb fbdge cbfdg acgbdf gdcaf acgdfe | bc fcab afcb dbc +edbag gebdc bedfag eacdbg bcedgfa ecab ec gaedcf bdcfg cge | ce ceab ec bdegcaf +fedcba fbgca cbafge ef gbdacf efbgcad gefca befg ecdga afe | fea adgfcb fcage bcdfae +da edfgc cgfdba adfecgb gfaeb dcefga fecdgb gad gdeaf ecad | cedfg dbfcega gfcaed abdcfeg +fcgbed fcbedga cafbe gdceba bcafge bfe fagb fb eacbg facde | cdfbeg fb ebgcadf fgcedba +fecdb fdcbae afdeg cdfea aec efgbadc ca cbfa dcagbe gbefdc | facb fabc fcdbega efadcb +dagcf gadfeb ad dfegbc cgdfba dbac abgecfd dcgfb cfgae adf | fgadc cbda ad cfagd +fdgcb agedbc cdbef feac efb ef febdac afdegb abced edgafcb | fe bfecd dcebf cafe +cafdbg eaf fe gebf befcag cfbga cgaef fdaecbg edcga febacd | gfbe egbf aebgcdf faceg +bfc febg cdfga dafbec cegbd fb cdbgfe cbfgd cadegb gbefdac | dcefgb dbfcg deafbc gbdec +bacgd cedfbg cf aefc dfc aecgdf adfcgeb gafed cafgd baefdg | dgafc fc dfc gfbced +bcge fgc efcdab ecgafb cfeab fabgd fagbc bgcdeaf efcagd cg | cbeg bdagf bcgaf fgc +cdaeg fbaec ceafd fd cfd adfceb bgaecf dbcegf bdaf cgeabdf | df cdf fdagbce cbedaf +dgcbf gecfadb gbdecf gfdbca fbagde ad cdgab dag afcd caegb | cgbedf dfac bdacfeg cafdbg +defacg bd cdbegaf cfaeb dbf cbefgd cgdaf cfbgda facbd gabd | gfadec bdf gbad adgcef +bagdce deagcf bcdf cfa abgfdc cf geacfbd afgeb bacfg dcagb | cf cdbf aedcbfg fbdc +fbceda bedcf dg gefcdb aefbgd gdf cgde gfacb bdcfg dfcegab | dfbagec dfg cabdfeg gd +gda cfgbde dgbfc fgabdc fcagd cagfe baecgdf faebdg ad adbc | efgdcb dag dacb ad +dagec eca fgeacd cdefab gfdacbe afged dabgfe ac dcebg afgc | bdgce ecdga eagdc ca +da bda gadc dbafg fabgc faedcb dfcbgea agcfbe bedgf gfbadc | acbfegd gfabdc bad da +gdce aebfdg faebc fcdabg acgfedb eacgdb adc adgeb cd daceb | cd cgbadf cad edcg +caedb agbed gfbcad eca fdce gbface baefdcg acfdb fbedca ce | eac cebadf fagcdb cae +fcbadeg fcae bfdca ceb ec cdebaf ecbdf gcedab bgdfe dfagcb | geabcd acef agbced gdbeafc +cbdef degba efbad eafc dbcfge ecdafb af fcbgad edfbcag baf | gbdea ecaf eacf egfcdab +fcde gabfd cdgeba fac fc dcabe bfaced dacbf ebgfac cgfbeda | adcfb fca gebdfca fadbc +fdceg cbd edcgfa cb cdgfeb gdebac edgcafb fceb agbdf bgcfd | adfgce beacdgf bc cedfbag +fcbegda dbcefg gcebad gbfc cdb gfbaed bc cebfd ecdfa bdegf | dcb gabedf beafdg bc +cfaed bacdg egd aegcdf gcef gedac cdbefga afdgbe bdfaec eg | gcade cefad bdgfea gaedc +ac dbeacg ace defba fcaebdg dabfce abfedg dcaf cbfae efbcg | fegdba cfbae cea dbacfe +dgcaef bgcaef cfdgeb gd fgecb dcgfbae gebfd bgdc adebf fdg | gdf dafgbec dfg adfeb +ag cadg cgfed aefbc bcegdf agdfbe agf egfca gefcdba gdfeac | dgca dgcaef cdga adebcfg +dfcgbe badg aedgc eabfc dfcbega cgdafe eagbc aegcdb gbe bg | acfdge bge adbg bg +bcfage adcefg dfagc fgaec cdf abcgd dcbgafe df dfae fgcbed | df cfd eacgf fdc +cbadfe bfg cfgebd cbdg edfgbca bg egbdf feagcb fedag cefdb | fgdeb gfb fbdeca bgcd +bcde fdcgba abfcde dbfac abefc befga aec ce acfdge afdegbc | fcbad eac ec becd +ce cbagdf gdcbf cfaebdg gcbe acfdge fcdegb dbaef cef bcefd | acbgdfe cfebd gcebdf ec +ecgbd eacbf cgadeb edf ecafbdg afgebd dcgf ecfbd fgcbed fd | bcfea edf efgabcd df +dgbf egafcd cfedbag cgb abcef dcefg ebcfg cgeadb bg cgbfed | adfgebc egbcf cfeab gaefbdc +gecbfd gbedc dgabcef baefgd abegc dbfce bfdace dg gdb dfcg | dfgc bedfac dg dbg +acbdgf daeb gcbeaf gdfce adefg fbdga cbdfega fae fgdbea ea | ea fcdgaeb ae gecfadb +ga bdgafe bcaed dcgaebf bacfed acedg gbadec edgfc agd bcga | adg dga agcb fdecgab +ebdcfg cfbdg ecgabf gcd edfc fdcbeag ebcdag dabgf dc cgebf | cd gcd gacbde cd +egdfac bf afebdg baf bfdeca bgdf fedga egacb gecbafd gbeaf | bfa fb gfdb fb +gcafb dc gecd fecbgda cfdbg dfebgc cdf fbegd dcfbea fgedab | edfcbg dgbcf cd dcf +badf fcagd agcefb dfgcab ba dcbeg cedabgf abgdc acegfd abg | ebfagc dfab ab fcbdeag +cfgbad gdbfe fe efgdacb cbdge dabgfe egdcaf befa bdgfa egf | decagfb eabf baef fe +dbfea bcaefdg dcfgeb ag bfceag egfcda becfg fgeba gcab ega | agbfecd aedfcgb gcba ga diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 161f451..da620ac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,6 +29,7 @@ set(SOLUTION_FILES "2016/day5/aoc.cpp" "2016/day6/aoc.cpp" "2016/day7/aoc.cpp" + "2016/day8/aoc.cpp" "2017/day1/aoc.cpp" "2017/day2/aoc.cpp" @@ -37,6 +38,7 @@ set(SOLUTION_FILES "2017/day5/aoc.cpp" "2017/day6/aoc.cpp" "2017/day7/aoc.cpp" + "2017/day8/aoc.cpp" "2018/day1/aoc.cpp" "2018/day2/aoc.cpp" @@ -45,6 +47,7 @@ set(SOLUTION_FILES "2018/day5/aoc.cpp" "2018/day6/aoc.cpp" "2018/day7/aoc.cpp" + "2018/day8/aoc.cpp" "2019/day1/aoc.cpp" "2019/day2/aoc.cpp" @@ -53,6 +56,7 @@ set(SOLUTION_FILES "2019/day5/aoc.cpp" "2019/day6/aoc.cpp" "2019/day7/aoc.cpp" + "2019/day8/aoc.cpp" "2020/day1/aoc.cpp" "2020/day2/aoc.cpp" @@ -61,6 +65,7 @@ set(SOLUTION_FILES "2020/day5/aoc.cpp" "2020/day6/aoc.cpp" "2020/day7/aoc.cpp" + "2020/day8/aoc.cpp" "2021/day1/aoc.cpp" "2021/day2/aoc.cpp" @@ -69,6 +74,7 @@ set(SOLUTION_FILES "2021/day5/aoc.cpp" "2021/day6/aoc.cpp" "2021/day7/aoc.cpp" + "2021/day8/aoc.cpp" ) add_library(solution SHARED ${SOLUTION_FILES}) diff --git a/test/test_2016.cpp b/test/test_2016.cpp index dfd05d0..4852cee 100644 --- a/test/test_2016.cpp +++ b/test/test_2016.cpp @@ -5,6 +5,7 @@ #include "2016/day5/aoc.h" #include "2016/day6/aoc.h" #include "2016/day7/aoc.h" +#include "2016/day8/aoc.h" #include "catch.hpp" #include <stdio.h> #include <string.h> diff --git a/test/test_2017.cpp b/test/test_2017.cpp index f5f3c5b..572072f 100644 --- a/test/test_2017.cpp +++ b/test/test_2017.cpp @@ -5,6 +5,7 @@ #include "2017/day5/aoc.h" #include "2017/day6/aoc.h" #include "2017/day7/aoc.h" +#include "2017/day8/aoc.h" #include "catch.hpp" #include <stdio.h> diff --git a/test/test_2018.cpp b/test/test_2018.cpp index 93c72c7..428e199 100644 --- a/test/test_2018.cpp +++ b/test/test_2018.cpp @@ -5,6 +5,7 @@ #include "2018/day5/aoc.h" #include "2018/day6/aoc.h" #include "2018/day7/aoc.h" +#include "2018/day8/aoc.h" #include "catch.hpp" #include <stdio.h> #include <string.h> diff --git a/test/test_2019.cpp b/test/test_2019.cpp index 6e43cf1..c3c4357 100644 --- a/test/test_2019.cpp +++ b/test/test_2019.cpp @@ -5,6 +5,7 @@ #include "2019/day5/aoc.h" #include "2019/day6/aoc.h" #include "2019/day7/aoc.h" +#include "2019/day8/aoc.h" #include "catch.hpp" #include <stdio.h> diff --git a/test/test_2020.cpp b/test/test_2020.cpp index d1ab578..b2359f1 100644 --- a/test/test_2020.cpp +++ b/test/test_2020.cpp @@ -5,6 +5,7 @@ #include "2020/day5/aoc.h" #include "2020/day6/aoc.h" #include "2020/day7/aoc.h" +#include "2020/day8/aoc.h" #include "catch.hpp" #include <stdio.h> diff --git a/test/test_2021.cpp b/test/test_2021.cpp index 173542b..0e58373 100644 --- a/test/test_2021.cpp +++ b/test/test_2021.cpp @@ -5,6 +5,7 @@ #include "2021/day5/aoc.h" #include "2021/day6/aoc.h" #include "2021/day7/aoc.h" +#include "2021/day8/aoc.h" #include "catch.hpp" #include <stdio.h> |