diff --git a/day20/INPUT.txt b/day20/INPUT.txt new file mode 100644 index 0000000..34b76ec --- /dev/null +++ b/day20/INPUT.txt @@ -0,0 +1,1727 @@ +Tile 2729: +###.###### +.......#.# +#..#...... +....#.#... +...#.....# +.....#.### +...#.....# +........#. +.......... +#.......## + +Tile 1783: +..#.#.#.## +#..#...... +...##....# +.......... +#.#...###. +.#........ +.....#.... +.#.#.#.... +##...##... +..###..#.# + +Tile 3889: +.#..#..### +###....### +#..#..#..# +#...#....# +#...#.#..# +.......#.# +......#..# +#.#...#..# +#.#......# +#.#.#..... + +Tile 3851: +#.##...... +...#.#.### +#.......#. +#..#.....# +.......... +...##..... +#...#....# +...#....## +.#....#.#. +#..##.#### + +Tile 1747: +#.#.##.##. +#......#.# +.........# +.......... +.......... +#..#..#..# +.##.#..#.. +#...#.#... +.#.#...... +#..###.#.# + +Tile 1627: +.#.###..#. +...#.....# +..#......# +#.......## +#.#....#.# +#.#......# +#.#....... +#...##..#. +...#.#...# +...#.#..## + +Tile 1433: +##..####.# +...#...#.# +#........# +.##..#...# +......#.#. +#..##..### +#....#.##. +.#.....#.. +#........# +#....#.##. + +Tile 1213: +.#.##..#.# +#........# +.#......#. +..#....... +...#...#.. +.....#.... +.....#.... +......#... +.#.#...... +#.##....## + +Tile 1741: +#..#...### +........#. +#...###..# +##........ +.##....... +##...#...# +.......... +#..#..#.## +###.#..##. +####.###.# + +Tile 2083: +#.####.### +...#...... +#...#..... +##........ +#...#..... +.#..#..##. +#..#.##..# +.#..###..# +#.#......# +.##...###. + +Tile 2063: +#...#.#..# +#...#....# +#.#......# +##......#. +.#.......# +#......... +#..#...#.# +........#. +.#.#...... +..#.#.#..# + +Tile 1109: +.##.#.#### +......#... +#........# +#....#..#. +##...#...# +#..#.....# +.......#.. +.#..#...#. +#........# +#..#.##.#. + +Tile 1049: +####..#... +##.....#.# +#.##...#.# +...#...... +.#......#. +#........# +#...##.#.. +##.......# +.##.....#. +#####..##. + +Tile 1979: +#.###.###. +...#.#...# +..#......# +#.#.#...#. +##........ +........#. +#...##.... +#.......## +.#....#... +#..#.###.# + +Tile 1193: +#.#...#..# +##.##...#. +...#.#.... +#.##.#.... +......#.#. +#......... +#.#......# +..#....... +#......... +...##..### + +Tile 3659: +...#...##. +###.#..... +#..#.....# +..##.##... +#.#....##. +#.#......# +#.......## +.#.....#.# +.####....# +.#######.# + +Tile 1811: +.#..####.. +#...#..... +.........# +...#....#. +.......#.. +.........# +#........# +........## +#.#..#.... +###.###### + +Tile 3541: +####.##..# +##..###..# +##.#.#.... +.......... +...#....## +##....#..# +###.....#. +#.......## +..#....... +##..###.## + +Tile 2113: +##..#..#.# +##..##.#.# +#.......## +.#...##... +..#.#..... +#.......## +...#..#.## +#.....#... +#..##..... +##.##...#. + +Tile 2081: +.##.###..# +#.#..#...# +#......##. +....#....# +...#.....# +#.....#### +#........# +.##......# +#...#..... +.####.#... + +Tile 1021: +##.###.#.# +.#.#..#... +##.#.##### +#...#....# +.....#.#.. +#......... +....#..... +...#...#.# +..##.#.... +.#.#.###.# + +Tile 1487: +..#.#.#### +.##..##... +..#.###..# +.##....#.. +.#.#..#.## +..#..#..## +##....##.# +........## +...#.##... +#..#.#.... + +Tile 3767: +.#..##.### +#.#..#...# +#....#..## +#...#..... +.#.#..#... +##..#....# +#.#.##.#.# +#....#..#. +#....##..# +##..###..# + +Tile 3109: +#..#.##### +.#..##...# +..#.#....# +#..#.##..# +.......#.. +#......#.# +..##.#...# +.#..#..... +#......... +##......#. + +Tile 1009: +#..##.###. +.......... +##.......# +#.#..##..# +.....#...# +.........# +...#.....# +####.#.... +##...#...# +....#..##. + +Tile 2693: +#.#..#..#. +..#.#..#.. +...##.#... +#.....#.## +.#.......# +.#..###... +....##...# +#..#.#..#. +......#..# +.##...#.#. + +Tile 3533: +.#.#.##### +##...#.... +#.....#... +.........# +#........# +#......#.. +...#.....# +#..#.#.... +..##.....# +.#.#.#.##. + +Tile 1171: +....#....# +...##...## +#..#..##.# +#........# +........#. +#..#....## +...#.....# +.........# +#....#...# +##.#####.. + +Tile 1279: +..#.##.### +#.....#..# +..##..#..# +......#... +#..#...#.. +...##..##. +.#.....#.# +#.....###. +.....#.... +..#..##.#. + +Tile 1583: +###..###.. +#......#.. +.#..#..##. +...#...... +...#....## +#...#.#... +...#.....# +...#.....# +#..##.#... +#.#.#...## + +Tile 1129: +####..#... +.......### +#..##..#.. +##.##...#. +......##.. +....#..#.. +##.....#.. +.....#...# +##......## +..###...#. + +Tile 2591: +#..##.#.#. +#......#.# +#........# +#.#....... +#..#.#.... +....#..### +...#...... +..#.....#. +#...##.#.. +#.##..###. + +Tile 1597: +##.#.####. +.#..#.#..# +#......... +##....#..# +#........# +.......... +#...#..... +.#.......# +.......#.# +#...####.. + +Tile 1423: +#....##### +..#......# +..##.#..## +.#..##.#.# +#......... +.#......#. +#.....#... +##.#.#...# +#....#.... +.#...#.### + +Tile 1669: +#.##.#...# +..#.##.#.. +#.......#. +.....#.... +.#..#.#... +.....#.... +.......#.. +.......... +##.##..... +#.#.#.##.. + +Tile 1283: +##..###.#. +.....#...# +#..#.....# +#...#....# +#.##.....# +#...#.#..# +#........# +.#...##.## +#...#.#..# +#..#.#.### + +Tile 2371: +.##.###.## +#......##. +.#.......# +#....#.... +#........# +#....#.... +........## +..#.....#. +.......#.. +#..###...# + +Tile 3823: +..#.###### +..#......# +.....#...# +....#...## +#.####...# +......#... +##....#..# +.#.......# +#.#..#.#.. +####.##.#. + +Tile 2141: +..#...#### +...#...#.# +#......... +..###.#.#. +...##.#..# +#.#..##... +..#....... +...#...... +#..#.#.##. +##.#.#.#.# + +Tile 1861: +#....##... +.#..#..... +##.#...... +.##..#.### +#.#.#..... +#...##..## +.#..##...# +....##.#.# +#......##. +#.###.#.## + +Tile 1063: +..##.#..#. +....##.... +#...##.#.# +#...#.#..# +##....##.# +#.....##.. +.#.#.###.# +..#...#... +#......... +#.#.####.. + +Tile 1847: +.#...##.## +.#.......# +.......... +.........# +.#........ +....#..### +#.##....#. +..#...#... +#.....#... +#.#..#.... + +Tile 1733: +#..#.#.#.# +..#.....#. +#........# +#.#..#...# +.####....# +.#........ +.##......# +#.......## +........## +#...##..## + +Tile 2441: +....###### +#......### +.#......#. +#..#....#. +.#..#.#..# +....#..... +.....##... +##.......# +....##.... +#......### + +Tile 3631: +##.#.#.#.# +#.##.##.#. +#..#..#... +..##.#...# +#.#.###... +#..#...#.. +#....#...# +...##.##.# +...#..#..# +##..#.##.# + +Tile 2543: +#..#####.. +.##....##. +##...##... +......#... +.###.....# +...#...... +..##.#..## +.##....... +#..#...... +#.####.#.. + +Tile 1297: +..#.#..#.. +........#. +#.#....... +#..#.#.... +.#..#####. +#.##....## +#......##. +#..#...##. +#.#..#.##. +###..#..## + +Tile 2099: +#..#..##.# +..#....... +#.#..#.... +#..#..#... +#.#..#..## +...##...## +#......... +.##.#..#.# +#...##.#.# +###...#..# + +Tile 2203: +.#.#..##.. +...#.#.... +..#....#.# +.#..#....# +.#.##.##.. +#.##...##. +........## +...#.#.... +.......### +...##.##.# + +Tile 3517: +#..#.#..#. +.......... +...#.....# +.......... +......#### +.#........ +.#........ +......##.# +#..##...#. +.##.###.#. + +Tile 2143: +....###.#. +#......#.# +#....#..#. +##....##.# +##....##.. +#......... +.#....##.# +#.#.##..## +..#.....## +.###.##.#. + +Tile 2791: +###..#..## +###....... +....#..... +#......... +#.###.##.. +....####.. +...#.....# +....#....# +.....##.## +.##.###..# + +Tile 2131: +#.#.###.#. +...#.....# +#.#..##... +#.#...#... +........#. +.......... +##.......# +..###...#. +..##.....# +...#...##. + +Tile 3797: +####...##. +.##....... +.......#.. +......##.# +...#..#..# +#......... +##....##.# +.....#.#.# +#......... +####..###. + +Tile 1327: +.#...#..#. +#...#..... +.......#.# +#.###..#.. +.....#.... +.#...#.... +.........# +#......#.# +.....#.... +####..##.. + +Tile 3323: +#.##.#...# +...####.## +#...#.#..# +#..#.#...# +......##.. +#..#....#. +#....#...# +....#..#.. +#..##....# +.######.#. + +Tile 2437: +#.####...# +........#. +...#....## +##...##... +..#####..# +.....#.... +...#.#..## +....#...## +...#...... +.##....... + +Tile 1993: +.#.####### +###....#.. +...#...... +.#..#.#... +#..#.....# +...##..##. +###...#... +.....#.#.# +.......##. +.#....#... + +Tile 2719: +##.##..#.# +...#...... +..#.#..... +.#.......# +#.....#... +#...#.##.. +#......... +##........ +#.#......# +#..##.##.. + +Tile 2531: +..#.....## +##.#...... +...#...#.# +#.#....... +#...#.#..# +...#.....# +#.#......# +#.##.#.... +.#.#.....# +#..#####.. + +Tile 3037: +#.#..#.... +#....#...# +#.##...### +#.#..#.#.# +#....#.... +.###...... +.........# +#.##...... +......#... +#..##.##.# + +Tile 3469: +#.....##.. +.##....#.# +....#...## +.....#.##. +..#...##.. +#.#...##.# +#....#.... +###.##.#.# +#......##. +####...##. + +Tile 2003: +##.#...### +....#.##.# +#..#.#..## +.....#..#. +..#.....## +#......... +#..##..#.. +#.##..#.## +.........# +##.#..#... + +Tile 3391: +#...##.#.. +.#....#... +...##..#.. +#.#....... +......#... +.......#.# +......#..# +....###..# +#.....#... +.##.#.#... + +Tile 1277: +...###...# +##.##...#. +.......#.. +.........# +#......#.. +##........ +#..##..... +#........# +.#..#...#. +#..#..##.. + +Tile 3793: +####.#.##. +....#...#. +##........ +.......... +##..#..... +#..#...... +#....#.... +#...#....# +.......... +########.. + +Tile 3739: +.#..##.##. +.#......#. +.#...##..# +....#.###. +.........# +.#..#..#.. +#..#.##... +#...#..... +....#..... +##.######. + +Tile 3373: +#.##.#..## +#.##...##. +#......##. +.#.....#.# +..##.#.#.# +##.#.....# +#.#...#..# +.......... +#........# +#.#..##.#. + +Tile 3697: +..#.....## +#......#.# +..#.#...## +###..#.##. +##...#..#. +.....####. +#..#.##..# +....#.#... +.....#...# +....#...#. + +Tile 1489: +..###.##.. +#...#..... +....#...#. +...#.#..## +#......... +......##.. +.#....#... +#....##.#. +#...##.#.# +#..#.#...# + +Tile 3877: +#......### +#......#.. +...#.#.... +###...#..# +.#........ +#.....##.. +#.......#. +#.#..##... +#......... +#######..# + +Tile 1373: +.#.....#.. +.....#.... +#......... +....#....# +..#.###..# +...#..#... +##...##... +...#.....# +#..###.##. +.##.#####. + +Tile 2609: +..#...#### +#.##....#. +..#....... +#......#.. +.......#.. +...#....## +#.....#..# +#...#....# +....##...# +.#.##.##.. + +Tile 1709: +.##..#.#.# +...#...... +#.#.#..... +....#...#. +#.....#... +.....#.#.# +#...#..... +.#...##..# +#........# +##.#....#. + +Tile 1447: +.#.##.#..# +.....#...# +#..#....## +#........# +...#...... +###......# +...#...... +#.......## +#......... +#.#.#####. + +Tile 2671: +#.##.##### +#..#..##.. +#.##.....# +.....#.... +##...##..# +#.###....# +#.#....#.# +.#.......# +#.#....### +....#.#..# + +Tile 2887: +.###.#...# +#...#..#.# +.....#...# +#.#...##.. +..#....### +.#..#..#.# +.#..#.##.. +#.#..##... +#.##...... +#.##..#... + +Tile 2111: +..#..#..## +.......... +......#..# +.......#.# +..###.#### +#...##...# +..#.#....# +.......##. +..#....#.# +..##.####. + +Tile 3041: +##....#..# +#..#.##..# +...#..###. +#.....#.#. +....##...# +..#....#.. +#....#..#. +....#..... +...#...... +.#.##....# + +Tile 2927: +.##...##.. +.........# +.#.....#.. +#..#.....# +..#.#....# +##..#.#..# +#.##...#.. +#.#....... +#.#.....#. +#.#...##.. + +Tile 2557: +###...#.## +#......#.. +##.#.#...# +...#.###.# +#.#..#.... +.##.###..# +#......#.. +#....#.#.. +###.#....# +.#..#.#... + +Tile 1663: +##...#.### +#.#.....## +##.....#.. +..#......# +#......... +....#....# +...#..#..# +#...#..... +.#......## +##.#...... + +Tile 1949: +##...###.. +.......... +....#...## +.......... +.#.....##. +#......... +.#....##.. +..#.##.### +..#.#....# +.#..####.# + +Tile 2953: +.....#...# +##...#.... +..#.#..##. +#.......#. +.....#.#.. +#.#.#....# +#..###...# +#......#.# +...#...... +.#..#..#.# + +Tile 2897: +..###..### +#......... +#...##.... +......#..# +......##.# +..#..##..# +#..#.#.... +##........ +#.#......# +.##....#.. + +Tile 1451: +.#........ +#.#....... +##....#.## +#.#....... +....##..#. +##.....### +....#...## +#..#.#.##. +#...##.... +##.#.#..#. + +Tile 2351: +....#.##.. +##........ +.........# +#.....#..# +##........ +.##...#..# +#...#...## +....#..... +#.#....... +...#...### + +Tile 1399: +#######.#. +###....#.# +##.#..#... +#......... +#.#.#..... +..######.. +##...#.#.. +##...#.#.. +.#....#... +#.###..... + +Tile 3079: +..#.##.### +....#....# +#........# +##.......# +......#..# +..#....#.# +.......##. +#......#.. +...#...... +.##..#.#.# + +Tile 2027: +.....#.##. +...#.#.... +.......#.# +#.#....### +#........# +#....#..## +.##..#..## +#####.##.# +...##....# +#......... + +Tile 2239: +...#....## +......#..# +..#......# +.......#.# +#.##.##### +...##...#. +..#.....## +...##..... +##........ +.#...#.### + +Tile 3019: +.#.#...#.. +..#.#..... +.....#..## +####.#...# +.#.##....# +#...#.##.# +##.#.#.... +#...#..... +#..#.#..## +####.#..#. + +Tile 2579: +.#....##.. +.#.##..#.# +#.....#..# +..#......# +#......... +#...#..... +#..#...... +#...#..... +...#..#.#. +..#....##. + +Tile 2699: +..#.#..... +#..##....# +#..#.#...# +###...#### +#.....#..# +#....##.#. +#...##.... +........#. +.##..##... +##....#..# + +Tile 1667: +..#..###.# +#.#......# +..##.##..# +..#....#.# +.#...#.### +...#..###. +...#..#.## +##.#.##..# +..####.#.# +.#..#..... + +Tile 3061: +#.##.#.#.# +.##.##...# +.......... +.......#.. +.....###.. +..##..#..# +#..###...# +#..##..... +#..#....#. +......###. + +Tile 1531: +..###.#... +#.....#..# +##.#..#.#. +#.#.##...# +..#......# +..#.#....# +##.##.#... +..##.....# +##...#..## +..####.### + +Tile 3929: +#..#..##.. +##....#... +.#........ +.....##... +...#.....# +..#..##..# +.........# +.....##..# +.#....#... +...##...## + +Tile 2711: +.#.####..# +#......#.# +#.#....... +......###. +#......... +#......... +#......#.# +.......#.# +#.....#..# +.#.#.###.. + +Tile 3907: +#.#.#...#. +....##..#. +.....##.#. +##......## +....#.#..# +#..#.....# +#...#..#.. +..##....## +.#........ +.#.#..#### + +Tile 3299: +##...##.## +.#........ +#...#....# +.#...#.... +.#.#...... +#.#...#..# +.#..#....# +.#..#..#.# +.#..#....# +###.#..#.# + +Tile 2677: +#.#.##.##. +#.#..#.#.# +....#....# +#......... +##.......# +##.......# +.....#.##. +#....#.#.. +.........# +#...###..# + +Tile 2207: +.##.#..### +#.#.##.... +.......... +#.#.#...## +........## +#.#..#.... +...##..#.# +.....#.#.# +.........# +.#..##.... + +Tile 2393: +#.#..###.# +##.##..... +#......... +........## +#.#......# +#..#...#.# +.........# +##..#....# +......#..# +#...#.##.. + +Tile 1453: +#..#.##... +##....#..# +#.....#.## +#.##....## +..##.#..## +...#...#.# +....##.... +#......##. +#......##. +###..####. + +Tile 1871: +######.#.. +#.......## +......#..# +##.......# +##......#. +..###..#.. +...#..##.# +.#.##...#. +........#. +..####...# + +Tile 2777: +#.#..#.#.# +......##.# +#.....#.#. +#.#.....## +#....###.# +...##...## +#.......#. +.......#.# +.#....#..# +..#####... + +Tile 1223: +...##.#.#. +#...#....# +##........ +#.....#..# +.....###.# +....#...## +.....#...# +.........# +#......... +#..###.### + +Tile 2633: +..##.##... +###.##.### +..#.#....# +....##.... +#..#.#.... +.#...#...# +#.##.....# +#.#...##.# +##...#.#.# +..######.# + +Tile 3307: +##...###.# +##.......# +#.#...#... +...#.....# +#.....#.## +#.#....... +##.#....## +##......## +.##.#.#..# +#...##..## + +Tile 1123: +.#..#..... +#.#...#... +.#..##.#.# +...###.#.# +###...#... +.##....#.. +#.#......# +..#..###.# +##.....#.# +###.#..##. + +Tile 2797: +.#.######. +#.#.#....# +#......... +##....#..# +#...#....# +###..#.... +.##..##### +..#.##.... +...#...... +..###.##.. + +Tile 1613: +########.. +##.#.....# +....##..## +##.#....#. +#.##...### +#......#.. +.......... +.......### +....#..### +#.#.##...# + +Tile 1511: +###...##.# +#....#.... +.........# +..#.....## +###.....#. +#.....#.#. +..###..#.# +#........# +#..#...#.# +#.#..#.##. + +Tile 1999: +#..#.#..#. +.........# +.......#.. +..#.#.#..# +#....#..## +.#........ +##.#.....# +##.......# +#....#..## +###..#.### + +Tile 2819: +..#.##...# +#..##...## +..##...... +##....#... +#...###..# +#.###....# +.#.#.#.#.# +#..#.....# +..#....... +..##...#.# + +Tile 3847: +##.######. +..#....... +.........# +.........# +#..#...... +####.....# +..#..#..## +#.....###. +##.....#.# +####....#. + +Tile 1723: +...###.... +#......... +#.....#... +.....#...# +#....#.#.. +#..#.....# +...#...... +.#...#..## +#..#.#.#.# +##.###.### + +Tile 1039: +#...#.##.. +......#..# +#.......## +##....##.. +#...#....# +#....#...# +##.#.#.#.. +#.#....... +#..#.....# +.#...###.. + +Tile 3433: +.#.###.#.. +#...#....# +#.....#..# +#.....#..# +#........# +.......### +..###.###. +.....#...# +#...#..... +....##..#. + +Tile 1069: +.#....#... +###..#.... +#......... +#....#.### +....#.#... +..#.....## +#.##.#.... +.#.##.#... +.......... +.#.#....#. + +Tile 3727: +#.#.#####. +...#..#..# +##......## +#.##...#.. +#...#.###. +.....#.##. +##..#.##.. +#...#..... +....#..... +..#######. + +Tile 1301: +#####..#.. +.....##... +#.##...#.. +.##......# +#.....#... +#....#.... +.....#.#.# +#.....#..# +#..#.....# +#.##.#..#. + +Tile 3583: +#.###..... +#......#.# +#..#.....# +......##.# +#.....##.# +##....#### +###...##.. +##.##....# +......##.# +..##...##. + +Tile 3191: +.##.#.#... +....#..... +#.#.....## +##.#.#.... +...#.....# +#........# +.......... +....#.#..# +........## +.###.####. + +Tile 1987: +##.....### +..#....... +##.##.#..# +.......... +......#..# +#...#.#..# +...#...... +###.#..#.. +#.##....#. +.##...##.# + +Tile 1493: +..##..#### +#..#.#...# +...#...... +...#....## +#......... +........## +...#.....# +#....##..# +.#.......# +.#.#..#..# + +Tile 1699: +.##...#.#. +.#.......# +.........# +..#...#..# +##...#..## +#.#..#.... +#..#..#..# +#....#...# +....#..... +#...##..#. + +Tile 2459: +.###..##.. +#........# +..#.##.... +#....#.... +#.#..#..## +...####..# +.....##... +..#......# +...#...#.# +#..#..#### + +Tile 2801: +.......#.. +..#.#....# +#.....#... +#..#.....# +.##...#... +#.....#..# +......#.#. +......#... +#....#.... +.#.##.###. + +Tile 1759: +##.###..## +#.##..#... +#........# +........## +.....#.#.# +..#......# +#.##...#.# +##......## +##.#...... +...###.#.. + +Tile 3821: +..#####.#. +#....#...# +.....#...# +.......... +..##.###.# +#....#.... +###.#.#### +#......#.. +#.##.....# +.....###.. + +Tile 2423: +#.####.#.. +.#........ +.##......# +...#...... +#..##..... +#..##...## +#......... +#.#.##.... +...#....#. +######.#.# + +Tile 1619: +##.##...## +..##.....# +#....#.... +#.#......# +#......#.. +.#.#.....# +#..#.....# +##...##..# +#......... +...#..##.. + +Tile 2539: +#.#.#.##.# +.......### +........#. +..#...#... +#......... +#.##....## +.####.##.# +.........# +##.##..#.. +...##.##.# + +Tile 2837: +.###.#.#.# +#.####...# +#......##. +#...#.#... +..###....# +.......... +.....#...# +#.....##.. +#....##... +#....##... + +Tile 1181: +#.###....# +.#...#.... +....#..#.. +....#..... +#.#.##..#. +##...###.. +#....#...# +.........# +.##...#..# +..##.#..## + +Tile 2731: +.#....##.. +......#.#. +......#... +.....#.#.. +#.#..##.#. +.....###.. +#...##.#.. +#...##..#. +#.##.#...# +..#....### + +Tile 2477: +####...#.# +...#...... +........#. +.......#.# +.......... +#.#......# +##...##... +.....#.... +##.#.....# +#..#.##..# + +Tile 2851: +.#....#### +....###... +#.....#..# +#........# +..#.....#. +.#.......# +#......... +...###...# +#.......## +##.##.#### + +Tile 3779: +...###.##. +#.#..#..#. +##.#..#... +..#....#.. +.##..#...# +.#.......# +..##..#... +..#......# +#........# +..##.....# + +Tile 1901: +.##..#...# +.........# +.......... +#..#####.# +#....#...# +###...#... +...#..#..# +.#..#..#.. +....#..... +.##.##.... + +Tile 3463: +....###### +..#....### +##....#..# +#....##.## +#..#...... +.........# +.......... +#......#.. +.......... +##....##.# + +Tile 1409: +.#.###..#. +#.#..#.... +.#.....#.# +#..#...... +#......... +#..#...... +...###.... +.....#.... +...#...... +##.###.### diff --git a/day20/Makefile b/day20/Makefile new file mode 100644 index 0000000..224acfb --- /dev/null +++ b/day20/Makefile @@ -0,0 +1,30 @@ +INPUT := INPUT.txt +SHELL := /bin/bash +CFLAGS := -w -g +#CFLAGS := -w -g -pg +#CFLAGS := -w -O3 +TIME := \time -f "\ttime: %E real, %U user, %S sys\n\tcontext-switch:\t%c+%w, page-faults: %F+%R\n" +export PATH := .:$(PATH) + +.PHONY: clean all compile deploy ex1 ex2 + +all: ex1 ex2 + +output: + @$(MAKE) --no-print-directory all 2>&1 > OUTPUT + +compile: ex1-c ex2-c + +ex1: + @$(TIME) ex1.bash < $(INPUT) 2>&1 + @#$(TIME) ex1-c 2020 < $(INPUT) 2>&1 + +ex2: + @$(TIME) ex2.bash < $(INPUT) 2>&1 + @#$(TIME) ex1-c 30000000 < $(INPUT) 2>&1 + +clean: + @rm -f ex1-c ex2-c core + +deploy: + @$(MAKE) -C .. deploy diff --git a/day20/README b/day20/README new file mode 100644 index 0000000..455717f --- /dev/null +++ b/day20/README @@ -0,0 +1,171 @@ +--- Day 20: Jurassic Jigsaw --- + +The high-speed train leaves the forest and quickly carries you south. You can even see a desert in the distance! Since you have some spare time, you might as well see if there was anything interesting in the image the Mythical Information Bureau satellite captured. + +After decoding the satellite messages, you discover that the data actually contains many small images created by the satellite's camera array. The camera array consists of many cameras; rather than produce a single square image, they produce many smaller square image tiles that need to be reassembled back into a single image. + +Each camera in the camera array returns a single monochrome image tile with a random unique ID number. The tiles (your puzzle input) arrived in a random order. + +Worse yet, the camera array appears to be malfunctioning: each image tile has been rotated and flipped to a random orientation. Your first task is to reassemble the original image by orienting the tiles so they fit together. + +To show how the tiles should be reassembled, each tile's image data includes a border that should line up exactly with its adjacent tiles. All tiles have this border, and the border lines up exactly when the tiles are both oriented correctly. Tiles at the edge of the image also have this border, but the outermost edges won't line up with any other tiles. + +For example, suppose you have the following nine tiles: + +Tile 2311: +..##.#..#. +##..#..... +#...##..#. +####.#...# +##.##.###. +##...#.### +.#.#.#..## +..#....#.. +###...#.#. +..###..### + +Tile 1951: +#.##...##. +#.####...# +.....#..## +#...###### +.##.#....# +.###.##### +###.##.##. +.###....#. +..#.#..#.# +#...##.#.. + +Tile 1171: +####...##. +#..##.#..# +##.#..#.#. +.###.####. +..###.#### +.##....##. +.#...####. +#.##.####. +####..#... +.....##... + +Tile 1427: +###.##.#.. +.#..#.##.. +.#.##.#..# +#.#.#.##.# +....#...## +...##..##. +...#.##### +.#.####.#. +..#..###.# +..##.#..#. + +Tile 1489: +##.#.#.... +..##...#.. +.##..##... +..#...#... +#####...#. +#..#.#.#.# +...#.#.#.. +##.#...##. +..##.##.## +###.##.#.. + +Tile 2473: +#....####. +#..#.##... +#.##..#... +######.#.# +.#...#.#.# +.######### +.###.#..#. +########.# +##...##.#. +..###.#.#. + +Tile 2971: +..#.#....# +#...###... +#.#.###... +##.##..#.. +.#####..## +.#..####.# +#..#.#..#. +..####.### +..#.#.###. +...#.#.#.# + +Tile 2729: +...#.#.#.# +####.#.... +..#.#..... +....#..#.# +.##..##.#. +.#.####... +####.#.#.. +##.####... +##..#.##.. +#.##...##. + +Tile 3079: +#.#.#####. +.#..###### +..#....... +######.... +####.#..#. +.#...#.##. +#.#####.## +..#.###... +..#....... +..#.###... + +By rotating, flipping, and rearranging them, you can find a square arrangement that causes all adjacent borders to line up: + +#...##.#.. ..###..### #.#.#####. +..#.#..#.# ###...#.#. .#..###### +.###....#. ..#....#.. ..#....... +###.##.##. .#.#.#..## ######.... +.###.##### ##...#.### ####.#..#. +.##.#....# ##.##.###. .#...#.##. +#...###### ####.#...# #.#####.## +.....#..## #...##..#. ..#.###... +#.####...# ##..#..... ..#....... +#.##...##. ..##.#..#. ..#.###... + +#.##...##. ..##.#..#. ..#.###... +##..#.##.. ..#..###.# ##.##....# +##.####... .#.####.#. ..#.###..# +####.#.#.. ...#.##### ###.#..### +.#.####... ...##..##. .######.## +.##..##.#. ....#...## #.#.#.#... +....#..#.# #.#.#.##.# #.###.###. +..#.#..... .#.##.#..# #.###.##.. +####.#.... .#..#.##.. .######... +...#.#.#.# ###.##.#.. .##...#### + +...#.#.#.# ###.##.#.. .##...#### +..#.#.###. ..##.##.## #..#.##..# +..####.### ##.#...##. .#.#..#.## +#..#.#..#. ...#.#.#.. .####.###. +.#..####.# #..#.#.#.# ####.###.. +.#####..## #####...#. .##....##. +##.##..#.. ..#...#... .####...#. +#.#.###... .##..##... .####.##.# +#...###... ..##...#.. ...#..#### +..#.#....# ##.#.#.... ...##..... + +For reference, the IDs of the above tiles are: + +1951 2311 3079 +2729 1427 2473 +2971 1489 1171 + +To check that you've assembled the image correctly, multiply the IDs of the four corner tiles together. If you do this with the assembled tiles from the example above, you get 1951 * 3079 * 2971 * 1171 = 20899048083289. + +Assemble the tiles into an image. What do you get if you multiply together the IDs of the four corner tiles? + +To begin, get your puzzle input. + +Answer: +You can also [Share] this puzzle. diff --git a/day20/TEST.txt b/day20/TEST.txt new file mode 100644 index 0000000..b07aa4b --- /dev/null +++ b/day20/TEST.txt @@ -0,0 +1,107 @@ +Tile 2311: +..##.#..#. +##..#..... +#...##..#. +####.#...# +##.##.###. +##...#.### +.#.#.#..## +..#....#.. +###...#.#. +..###..### + +Tile 1951: +#.##...##. +#.####...# +.....#..## +#...###### +.##.#....# +.###.##### +###.##.##. +.###....#. +..#.#..#.# +#...##.#.. + +Tile 1171: +####...##. +#..##.#..# +##.#..#.#. +.###.####. +..###.#### +.##....##. +.#...####. +#.##.####. +####..#... +.....##... + +Tile 1427: +###.##.#.. +.#..#.##.. +.#.##.#..# +#.#.#.##.# +....#...## +...##..##. +...#.##### +.#.####.#. +..#..###.# +..##.#..#. + +Tile 1489: +##.#.#.... +..##...#.. +.##..##... +..#...#... +#####...#. +#..#.#.#.# +...#.#.#.. +##.#...##. +..##.##.## +###.##.#.. + +Tile 2473: +#....####. +#..#.##... +#.##..#... +######.#.# +.#...#.#.# +.######### +.###.#..#. +########.# +##...##.#. +..###.#.#. + +Tile 2971: +..#.#....# +#...###... +#.#.###... +##.##..#.. +.#####..## +.#..####.# +#..#.#..#. +..####.### +..#.#.###. +...#.#.#.# + +Tile 2729: +...#.#.#.# +####.#.... +..#.#..... +....#..#.# +.##..##.#. +.#.####... +####.#.#.. +##.####... +##..#.##.. +#.##...##. + +Tile 3079: +#.#.#####. +.#..###### +..#....... +######.... +####.#..#. +.#...#.##. +#.#####.## +..#.###... +..#....... +..#.###...