diff options
-rw-r--r-- | day20/data.js | 1731 | ||||
-rw-r--r-- | day20/day20-1.js | 40 |
2 files changed, 1771 insertions, 0 deletions
diff --git a/day20/data.js b/day20/data.js new file mode 100644 index 0000000..e6dcfaa --- /dev/null +++ b/day20/data.js @@ -0,0 +1,1731 @@ +const data = ` +Tile 3461: +#.##.#.... +...#...... +#..##.#... +#...##.#.. +..#.####.# +.....#.... +##..#....# +#....#.... +##.###.#.. +..#.#.#.#. + +Tile 2221: +.#...#.... +###....#.# +#.......#. +##.####..# +#......#.# +..#..#..## +#..##..### +#..###..#. +.....#.... +.....###.. + +Tile 1613: +###...#.#. +.#...#...# +......#.## +.........# +...#.##... +.#........ +#.#.#....# +...#.....# +##..#..... +...###.### + +Tile 2273: +#.#...#.#. +##.##..##. +#...#.#..# +....#....# +.#......#. +##..#.#..# +......#... +##..###..# +.#...###.. +#.#.##...# + +Tile 2971: +#...##..## +#...#...#. +###....... +..##....#. +.##....#.. +#.#..###.. +.#........ +#......#.# +.....#.... +..###.#..# + +Tile 3697: +####.##.#. +####.....# +.#....##.. +##..##.... +#.......#. +..#.#.#... +...#...#.# +#......##. +....#.#... +...#####.# + +Tile 3331: +.#.#..#..# +...#....#. +.#..#..##. +....#...#. +##.#.##..# +#...#....# +...#...### +##....#..# +..#..#.##. +...#...... + +Tile 3907: +###..#.### +##..#..#.# +#..####... +#...###... +#......... +##..#....# +#.#....... +......#.## +###.#....# +##.###.#.# + +Tile 1091: +#....#.##. +..#.#..... +#.##..#..# +#.#....... +...###.#.# +.#.##.#.#. +#.#..#..#. +..##....## +.#....#..# +#..#.#..## + +Tile 3931: +##.#.##..# +#.....#... +.#.##..#.# +##.#..#.#. +...#...... +#..####..# +.###..#.#. +.#..#..... +........#. +#..####... + +Tile 2137: +#.....##.# +#..#...##. +##..##...# +#..##....# +..##...#.# +...##.#... +#..#..##.# +...#.##... +###.##...# +..#.##.### + +Tile 1571: +######.### +##..#..#.# +#......#.. +#.#.#..... +#....#.##. +.##.#....# +.....##..# +.#....#..# +...#..##.. +....#####. + +Tile 2269: +.#.#...##. +.##..#.... +.....#.#.# +.......... +#....#.... +##..#.#... +##...#.### +#..#.##.## +###.##.#.. +#.#.....## + +Tile 3671: +#.#.#...#. +#...#....# +....##.##. +#.....#..# +#....#.#.# +###...#..# +#.#....#.. +...#...#.. +#...##...# +...####.## + +Tile 1489: +..#.#..#.. +#..####.#. +.##.....## +...#.#.#.# +......#### +....#.#... +##..####.# +#....#.### +#...##.... +.#.#.####. + +Tile 2879: +#.##.##.#. +.#....#.## +#..#.....# +###....### +###..#..#. +.#.......# +.#..##..#. +.....#.... +.#.......# +########.# + +Tile 1511: +###..#.#.# +#..##..### +.#.....### +.#.......# +.#..#..... +.#........ +.#.#.....# +#..###.#.. +#..#...#.. +#..####.## + +Tile 3917: +.#####..#. +....#..... +.#.###.#.# +.###.##..# +...#..#..# +#.#....### +##..#...## +#.#.#.##.. +#..#..##.. +#.#..##.#. + +Tile 1951: +#.#...##.. +.......... +......##.. +...##..... +.#...#.#.. +#....#..## +....#...## +#.....##.# +#..#.#..## +#.###..... + +Tile 2417: +.#..#.###. +#.###..##. +#..###.... +.#.#...... +#.....#.#. +#.....##.. +...#..#... +.##....##. +#.####...# +.#####.... + +Tile 1823: +#...#.##.. +#....#..#. +#.....#... +#...#.#.## +#.##...... +#......#.. +#..#.###.. +##.......# +.##......# +....##.### + +Tile 2081: +..#.###.#. +##....#... +....####.# +.......... +...#..##.. +..#..#...# +#.#....#.. +.......#.. +##..#.##.# +#..#...##. + +Tile 1879: +##.###...# +.#.#.....# +..###.#..# +..##.##... +....#....# +#........# +#.#......# +..##.###.# +.#.#...#.. +#.#..#...# + +Tile 2423: +#...#.#### +#.####.... +.##.#.###. +......###. +....#....# +.#......## +.#......#. +.#.#.#.#.# +.#..#..#.# +..###...#. + +Tile 2593: +.##..##.## +......#..# +.#.#..##.# +.#........ +.#...#.#.. +#......... +..#..#...# +.....#..#. +.#.#....## +########.# + +Tile 1321: +.#....#.## +##....#.## +#...##.#.# +#.....##.. +..##..#..# +#......#.# +......#### +..#.....## +.......#.# +##..###..# + +Tile 1723: +.##...###. +##.....### +.##...##.. +###....#.. +#.##...##. +##..#.#... +......#..# +.....#..#. +..#..##... +.#####..## + +Tile 1787: +###.#...## +...#..#..# +.####...## +...###.#.. +.#..#..#.. +#.#.....## +.....#.... +...##..... +#..##.#.#. +#..#....## + +Tile 1499: +.###..##.. +#.#..#.... +.#.....#.. +......#... +...##...#. +#........# +#.#...#..# +..##....#. +##.......# +.###.#.#.# + +Tile 2251: +.#####.##. +.#......## +..#....#.# +#..#..#.## +...#..#.## +.#.#.#.#.. +.##.#.##.# +####.##..# +.#....##.# +....###### + +Tile 3001: +#..##..... +#...##..## +#...#..#.. +#.#....#.. +..##...#.. +...#...#.# +#.##...##. +.......... +.....###.. +..##.###.. + +Tile 3923: +##......#. +###.#..#.# +#..#.#.... +....#....# +...##..##. +....#..#.# +.......... +..#...##.. +####...#.. +......#..# + +Tile 1871: +..#..#.... +......#.## +#........# +##..#...## +#..#.....# +......#... +.....#..## +#.#.#.###. +#.....#.#. +####..##.. + +Tile 2689: +...###.##. +#.#...##.. +..#......# +.......### +....#..... +#..##.#.## +#.#.....#. +...#..#... +##.....#.. +.#.#.##... + +Tile 3733: +.#.##.##.. +...##.#.#. +#.#.....## +#.#..#.... +.....#.#.# +##........ +..#..#.... +####...#.. +###....... +##..#####. + +Tile 1789: +#.....#.#. +#.####..#. +##..##...# +#.#...##.# +#..##..... +#.....##.# +...#.##.## +....#.#... +#....#..## +#..#.#.... + +Tile 3079: +##.##.##.. +#...####.# +...#...#.# +.##..##... +.##....#.# +#...#..#.# +....###### +##.##..#.# +.......#.# +..###..... + +Tile 2477: +..##.#.### +#####.#... +...#..#..# +.#....#.## +##.......# +#...#....# +.......#.# +#.......#. +....#.#.#. +#...#.#.#. + +Tile 1777: +####...### +#.....#.#. +#.#.#.#.#. +#.......#. +###...#... +.####..#.# +..#.#...#. +##..#..##. +...#.....# +##.##..... + +Tile 3467: +###.#....# +....#.#... +#..##.#.## +##...#...# +......##.. +#..#.....# +.......... +##....#... +.#.##..#.# +#......... + +Tile 1129: +#..#.....# +#.#..#.#.# +..#...#..# +.#.#..#..# +##.#.#.... +.##..#.... +........#. +###...#.#. +##.#.#.#.# +##..####.# + +Tile 1097: +#.####..## +#.###...#. +#..#....## +#....##### +#.#....... +#.#.....## +.#...#.#.# +#..#..#.#. +...##...#. +..####.... + +Tile 1283: +..#....### +.......... +#.##.#.... +..###.#.## +..#...#.#. +#.......## +.#.....### +#.###..#.. +#..##.#... +#####.##.# + +Tile 1867: +#########. +...###.... +.#...#...# +#....###.# +#.......## +..##.#...# +##....#..# +#....#..#. +.....#...# +##..#..... + +Tile 1229: +#.#.....## +#......#.. +##..##..## +...##....# +#.###..#.. +#......... +....##.##. +#..#....#. +#.......#. +..#...#### + +Tile 1753: +..#.#..##. +.........# +#..#.#.#.. +#...#....# +##..#..#.. +#...###... +#.......## +..#..#..## +.#....#..# +.##...#.#. + +Tile 3761: +...##.#.## +.##......# +#.######.# +....##..## +#.##..##.. +##..#.#... +.........# +#.##.#...# +##....#### +#...#.###. + +Tile 1373: +.###...### +###..#.#.. +#..#.#...# +#.###.#.#. +...###.... +#...#.##.# +###..#..#. +..##...##. +.#.##.#..# +..######.# + +Tile 1031: +..#..##.## +#.##.#.#.# +...#...... +...#.....# +..##.#..## +.#.###...# +.........# +....#....# +#.......#. +####.##.## + +Tile 2707: +#.#.#..... +.##.....## +.##....#.. +##.#.....# +...#..#..# +#..##.##.. +.......... +...##...#. +......##.. +.#..##.#.# + +Tile 2791: +.#.#...... +#......... +#....####. +#.#..#.### +#..#....#. +..#....... +#..#.....# +#...##.### +.......#.# +#....##... + +Tile 1297: +####.#..#. +#...##.#.# +.##....... +.......... +......#.## +#..##...#. +.......... +###...#.#. +#..##..#.. +.#..#..#.# + +Tile 3257: +..#....... +#..#.#...# +#...#...## +#......#.. +.......... +...#..#... +.#..####.# +..#...##.. +.#...#...# +....#.#.## + +Tile 2411: +.###.##.#. +..##.....# +##....#..# +####.....# +.##....#.. +...#..#... +###.#.#.#. +......#..# +.....#..## +..###.#..# + +Tile 1223: +##..#.###. +.......##. +#..####.#. +#.#..####. +#.#.##.#.# +#......... +...#..##.. +###....### +#...##..## +.###.##..# + +Tile 2579: +###.##..## +.##.#..#.. +#.#....#.. +..#..#...# +#.....#..# +#.#.#.###. +#..#.##... +......#... +#....#.... +....#.#.## + +Tile 3299: +#..##.###. +#...#....# +#........# +.......... +.##......# +#.##...... +.#.##.#... +#..#.#.#.. +#........# +.#.####.## + +Tile 2293: +##.##.#### +..##..#..# +.#...#.... +#.#.##..#. +...###.... +......#### +#......... +#.##.....# +.#.#..###. +##.##...## + +Tile 1549: +##.#.####. +.#.#..#..# +.##....### +###....#.. +##.##..#.# +####.#.#.. +........## +.....###.. +#.#.#...## +....####.. + +Tile 3739: +####.##.#. +.#...##.## +###.....#. +#.#......# +#.......#. +##.......# +.###.....# +##..##.#.. +.#........ +..#.#.#..# + +Tile 2393: +#..##..... +####...### +...#.#.### +#..##..#.# +#.#.#.##.# +#.##...##. +.......... +#.#....#.. +..##....## +#..#.####. + +Tile 2459: +#####..##. +#....#..## +........#. +##.#..##.. +###.#....# +...#.....# +..#...#..# +#....#.... +#.#.##...# +..#..#.#.# + +Tile 2063: +#.####.##. +#.....#..# +.#.....##. +#....##.#. +......#.## +.#...#.#.. +.#.....#.. +#.#...#.## +#...#..... +#.####...# + +Tile 1523: +..##.##... +#...#.#... +#....##... +#.#..#..## +#.###.#..# +...###...# +#...#..#.# +.##.##..#. +...####.#. +.##...#### + +Tile 2311: +##.#..##.# +#..#..#.#. +........#. +.#........ +..#...#..# +..#..#.... +.######### +##..#.##.. +....#..... +..#.##.... + +Tile 1013: +...#...#.# +...#....#. +.........# +...#.#...# +##..##.... +#..#.#...# +#.##...### +....#.#... +###..#.... +..#.##.#.# + +Tile 1873: +##.#####.# +.#.#.#.##. +#.#.##.... +#.###....# +##..##.##. +###..#.#.# +..#.#.#... +##.#.##... +...#.#.### +....####.# + +Tile 2381: +####.#.... +#....##.#. +####.#.##. +#..##...#. +###......# +..#....#.. +##...##.#. +#.......## +...#..#.## +.##.#.#### + +Tile 2719: +..#.....#. +##..##.... +.#.##..... +.....#.... +##.....#.. +..#...#.## +#.......#. +#.....#... +..#....... +#.......#. + +Tile 1583: +#.#.#.#... +..#.###.#. +.#......## +#...#..#.. +..#.#.##.. +#..#.....# +##....##.. +.#..#..### +....#..... +#..#.#.### + +Tile 3413: +...#..##.. +#......... +#..#...... +...##..... +##..#.#... +.#.#...... +....#.#... +..#...##.# +...#.#.... +#..#.##### + +Tile 3727: +###....#.. +#...#..#.. +..#..#.... +#........# +#....#.### +.#......#. +##.#.##... +...#.##..# +...#...... +..#.##..## + +Tile 3643: +.#.#....## +#...###..# +##.##....# +..#...#..# +##.##.#..# +..#....#.# +....#.###. +....#..#.# +#..##.#... +..###.##.# + +Tile 3391: +#.#..#..## +...###...# +#..#...... +.##.#...#. +......#... +.#..#.#..# +.##.#..##. +...#..#.## +.#........ +#.###.##.. + +Tile 1301: +.#..###.#. +#.#..####. +#.......#. +...#..##.. +#.#.#...## +..##...#.. +.#...#.### +#......#.# +.###..###. +.#..##.##. + +Tile 3169: +####..###. +###.#..... +#..##....# +#......##. +#.....#.## +..#.##...# +#...#.#..# +.#...####. +#........# +##.##.#.#. + +Tile 2333: +#.#...#### +..##..#.#. +#.#..#...# +..#....#.# +#....##### +.#..##.... +#..#...#.. +.......### +.#.#.#.... +##.###..## + +Tile 3163: +#.#.###### +........## +#.##.....# +...###...# +#.#..#.... +.#.....### +#..##.#..# +.##...#.## +.......... +###..#.### + +Tile 1553: +.###...... +#.#...#..# +.....##..# +#..#...#.# +#.#.###... +##.#..#... +#....##..# +#..##.#... +##.##..... +...##....# + +Tile 1019: +#..###.##. +..##.....# +##...#.#.. +.#..#...## +##......## +#......##. +....#.#.#. +.#...#...# +##.#...#.# +###.#..#.. + +Tile 3209: +##..#..... +.##...###. +.#..##..## +....##.... +..#.#.#... +..#..#.#.. +..##.#..## +.#...##... +#...##.#.# +#.##.#.... + +Tile 1783: +####.#.#.# +..#...##.# +.###.....# +.####..#.. +#.##..#.## +......#..# +#......... +.......#.. +#..#.#.#.# +#...#.##.. + +Tile 3767: +##.......# +#......... +#..#..##.# +...#...... +#..#..#... +##......#. +###......# +....##.##. +....##.... +..#.#..... + +Tile 3853: +#...###... +....#.#... +#....#..#. +#.###.#.#. +.#.###...# +....#...## +#........# +#.#...###. +##.####..# +#.###....# + +Tile 2711: +#...##.### +..#.....## +#.##...#.# +..#..#.### +.##...##.# +##.....#.. +..#..#.... +#......#.# +.#.#..#... +##.#.###.. + +Tile 2837: +#..#..#.#. +#....##... +.......#.# +.......#.. +#..#..##.# +.#.......# +..#.##.#.# +#..#.....# +###.#....# +#.##..#... + +Tile 3541: +.#..#..... +#.....#..# +#.#.#..#.# +...####..# +#.#..##... +.....#...# +....##.... +..##..#... +..###.##.# +...###.##. + +Tile 3797: +.##...#... +...#....#. +.#.###.... +.....##... +#.###...## +#..#.#...# +.#.###...# +#...###..# +.....#.... +##..##...# + +Tile 3863: +###.##.... +#......#.. +#..#...##. +....#....# +#..#...... +##..#.##.# +..##....## +....##.... +#....##### +####....#. + +Tile 2161: +##.#.###.. +###.#..#.# +###.#..... +##........ +##.#..#... +.........# +##..#..... +....##.... +#.#.#..#.# +....#..#.. + +Tile 3049: +.#...#.#.# +#.#......# +#.....#.## +.##.....## +#.##...#.. +.##.#.#.## +....##.... +.##..#.... +.##...#..# +.###..##.. + +Tile 1249: +..#.#...#. +#..#...#.# +...#..#..# +...###.... +...#..#..# +##..#..... +##...#...# +#...#.#.#. +.....#..## +#..###.### + +Tile 2143: +#..####.#. +....#....# +...#...#.# +##.##..#.# +...##..##. +###.###.#. +....#..#.. +##..#.###. +.#...##..# +...#...##. + +Tile 2549: +..#.###..# +#..#.#..#. +#.##....## +....#...#. +##.#.#...# +..##....## +.......... +##.#.##... +###...#.#. +..#.....## + +Tile 1039: +#####.###. +#...#....# +.#.....#.# +.#.###.... +##..#....# +##.....#.# +...#....#. +..#.##..## +..#......# +.####.#### + +Tile 2797: +###.#.###. +...#.##... +.......#.. +#.#..#.... +##..#...#. +#...###... +..##.#..#. +..####.#.. +...##....# +.#..#####. + +Tile 3301: +##...###.. +...#..##.. +.#.#.#...# +#.#...##.. +.###....#. +.##...#..# +.......... +#....#...# +#..#.##..# +.#..##.... + +Tile 1213: +##.#..#..# +..#.##.... +##.#.##... +...#...#.. +#........# +..##..#..# +..#.#....# +#.##.#.... +.......##. +##..##.#.. + +Tile 2179: +..###.##.# +#......... +.....#...# +..#.....#. +...#.#.... +..#....... +#.###...## +#.##..#..# +#.#......# +#.#..#...# + +Tile 1801: +##.##.##.. +..#..###.. +##...###.. +##..#..#.. +#..#..#### +#..##.#..# +###....##. +#....#.... +.....#.#.# +...#.....# + +Tile 1997: +..######## +##.......# +.#.....##. +##.......# +##........ +......#..# +......#### +....##.#.. +##...##... +##...##..# + +Tile 2029: +##..#...## +.....#...# +#...#..##. +#...#..#.# +.#.......# +.......### +.#...#.... +#...#.##.# +#...#....# +###.###..# + +Tile 2129: +#..#.##### +#...#..#.# +..###.#.#. +##.#.#.#.. +#...###... +.#.....#.. +...#....## +...##..#.# +#...###.#. +##...#..## + +Tile 1163: +.#.#.##..# +###.....#. +##.###..## +###..##### +.......#.# +..#..##... +..#..#...# +#..#.##... +####.##... +...###.#.. + +Tile 2731: +......#... +#.#....### +..###..### +.......##. +.......... +.........# +..#.##.... +.#.#.#...# +..#..##..# +#.#...##.. + +Tile 2339: +.######### +#..#...... +.#...#...# +#..##....# +#.##.#...# +.#........ +#........# +.#.......# +#.....##.. +.#.###.### + +Tile 1429: +#...###.## +.###..##.# +.....##... +......#.## +#.#.#.##.. +....#.#... +#.##.####. +#.#.#.#.## +#.##.#...# +###.###.#. + +Tile 3989: +.######... +#......... +#........# +.##......# +#.#......# +...#.##..# +#.....#..# +#......#.. +.#.###...# +.#.#....#. + +Tile 1171: +#..###.#.. +#...#.#... +#...##.... +#.###..... +.....#.#.. +....#.#..# +#.......## +........## +.##......# +##....###. + +Tile 2887: +...####.#. +..#.#..... +####.#...# +#...#.#... +.##..#.... +#..#...#.# +###.#...#. +#.#.##...# +..##....#. +#.#.##.... + +Tile 2963: +#....##.#. +.......... +...#.###.# +#.#....... +....#.#..# +.#...#..#. +..##.#.### +.#.##.#..# +...#.#..## +....#..##. + +Tile 2027: +#.###.##.# +...#.#.... +#......... +.#....#... +#.#...#.## +##.......# +.#.#.#.#.. +#...#....# +.#.##..#.# +...###.#.. + +Tile 3833: +###..####. +#....#...# +#..#.##.## +#..#...#.. +..##....#. +.....#.#.# +.##.###..# +#..#....## +#.....#.## +#...####.# + +Tile 1931: +.#.#.###.# +.##......# +#...#...## +.#.##....# +####...... +#..#..#..# +..##.....# +#..#.#..## +#.......#. +.#.#.####. + +Tile 1721: +#.#..###.# +........#. +##.#...#.# +#...#..#.# +#######.## +..##..##.# +#...####.. +......#.## +#......#.# +........## + +Tile 1399: +#...##.### +..#.....#. +###....... +.##.#.#... +..#....... +#...#.#..# +#.#.#..#.# +..###....# +.##..#.... +.##..##.#. + +Tile 3847: +.#.....##. +#..#.#...# +#...#.#... +#..#..#..# +#....###.# +........## +..##..#..# +###.####.# +..#......# +###..##.#. + +Tile 1069: +.#...#.##. +#....#..#. +..##..#..# +#......#.# +#......... +.#...##..# +#...###..# +......##.# +....#....# +.#.##...## + +Tile 1279: +##.#.....# +.#......#. +####...#.. +#...#..#.# +..#.#..#.# +#...#...#. +##...##... +........#. +###.#....# +....#.#### + +Tile 3547: +..##...### +#.......## +##.......# +#.###..... +###.##.### +.......### +#.....#... +#.#..#.... +.##....#.# +#....####. + +Tile 2699: +..#.#..#.# +.##.....## +.........# +#.......## +#..#...... +###......# +##...#.#.# +.##.#....# +#.......#. +#...#..### + +Tile 3251: +.###.####. +#.....#... +..#..##..# +....#.#..# +#.#.####.. +#..#.##... +#......##. +..#...#..# +..#......# +#####.#### + +Tile 1033: +#####.#### +....#..... +#.....#..# +##.##.#.#. +##..#....# +.......... +.#####...# +###.##..## +#..#.##..# +.##...#### + +Tile 3583: +.####.##.. +#.....##.. +##....##.. +##.....#.# +##.#####.. +..#####... +.....#.... +....#.#.## +#......#.. +.#.#..###. + +Tile 3511: +#..#.....# +.......#.. +..#..#..#. +..#.#.#... +#.#...##.. +#.#..#.... +#....#.... +###.#....# +..#....#.# +....#..... + +Tile 3469: +#....####. +.#...#.... +.#..#..... +#..#..#..# +.####..##. +..##.##.#. +#.##...... +##.......# +#........# +.#.###.#.# + +Tile 1151: +...###.#.# +....#.#..# +.#........ +...#...... +##.#..#.#. +.#.#...##. +#.##...##. +.###..#..# +.........# +.##..#..## + +Tile 1697: +###.###.## +....##.... +.#.....### +.#........ +#.##.#.### +###..####. +....##..#. +.......... +#.#......# +.#.....### + +Tile 3167: +.####.###. +#.##....#. +...##..... +##...#...# +...#.##### +........#. +.##.#..### +....#....# +....#...#. +...#..##.# + +Tile 3929: +####.###.. +#......... +.#....#... +.........# +#.#...##.. +#.....#.#. +###..#.#.# +.###..#..# +#.#..#..## +#######.## + +Tile 3253: +#...#.#... +##...##... +#...#..#.# +.#......#. +...#....## +##.#..##.# +###..##.## +.#...###.# +#..##..#.# +.###..#... + +Tile 1453: +.####.#.## +.....##... +#......#.# +...###.### +....#....# +#.##..###. +....##.... +.##..#.#.# +#...##...# +####..##.. + +Tile 1949: +#..#....## +#..#..##.# +###.##.#.. +.#.....##. +#.#.##.#.# +...##..#.# +#..#.....# +#..###.... +#...#....# +.....#..#. + +Tile 1747: +.##.#.#### +##.#.##### +.........# +#..#..#... +..##...... +....##...# +..##.##... +.##....### +#.###....# +#.#..#.#.. + +Tile 1933: +.######... +#..#.###.# +.....#..#. +......##.# +.#..#...## +...#....#. +.##..###.# +#...#.#... +#....#...# +..#....... + +Tile 2237: +.#.#...#.. +.#.##..### +.......... +#....#.... +#.##...#.. +#.....#.#. +.........# +#.......#. +.####.#.## +#.#...#.#. + +Tile 3793: +#.#..####. +.#.#..#..# +##..##.#.# +#.#.##.... +.#..#..### +.#.#.#.... +##.....#.# +.#.##...## +#.#...#... +#.#.#.##.. + +Tile 3457: +#####.#.#. +#.##..###. +......#..# +##..##.### +...#.##... +..#.##...# +#...####.# +....#..##. +...#...#.. +#...##.#.. + +Tile 3313: +....###..# +.#.....#.# +#.#....#.. +..#.##.#.. +##.#..#.## +.....#..#. +.#..#..... +#..#....#. +#..#...... +.####.#..# + +Tile 2287: +#.##...#.. +....##...# +##...#.... +#.#.....## +#.#.#.#### +....##..#. +##.#...##. +..##.#..## +#.....##.. +##..###..# + +Tile 3659: +..#.##.##. +.........# +##......#. +#.#......# +###.####.# +.#....#..# +.#..#..#.# +.##...#... +#.#...##.. +...#.###.# + +Tile 1607: +#...##..#. +...##.###. +##.#..##.. +#...#..... +#.#...#### +.#.#...... +...#..#... +.###..#..# +#.##.##..# +...##..... + +Tile 3319: +....#..#.# +.#.#...... +#.#.#..... +.......... +##.#...##. +#..##.#... +.........# +.......... +...#.....# +#.##..#### + +Tile 2383: +...#.#.#.# +..##..#### +.##...#... +..#....#.# +..#..#.#.# +##..#..... +.#....##.# +.##...#... +..#...#.#. +##.###.... +` + +module.exports = data diff --git a/day20/day20-1.js b/day20/day20-1.js new file mode 100644 index 0000000..865410d --- /dev/null +++ b/day20/day20-1.js @@ -0,0 +1,40 @@ +const data = require('./data') +const tiles = [] +const getSides = (t) => { + const sides = [t[0], t.map(r=>r[r.length-1]).join(''), t[t.length-1], t.map(r=>r[0]).join('')] + const reversed = sides.map(s => s.split("").reverse().join("")) + return [...sides, ...reversed] +} + +data + .split('\n\n') + .map(s => s.split('\n').filter(Boolean)) + .forEach(s => tiles.push({ + id: parseInt(s[0].match(/[0-9]+/g)[0]), + array: s.slice(1), + sides: getSides(s.slice(1)), + matches: [] + })) + +const check = (t1, t2) => { + for (const s1 of t1.sides) for (const s2 of t2.sides) { + if (s1 === s2) {return s1} + } + return null +} + +for (let i=0; i< tiles.length; i++) for (let j=i+1; j<tiles.length; j++) { + const match = check(tiles[i], tiles[j]) + if (match) { + tiles[i].matches.push({ id: tiles[j].id, side: match }) + tiles[j].matches.push({ id: tiles[i].id, side: match }) + } +} + +const res = tiles + .filter(t => t.matches.length === 2) + .map(t => t.id) + .reduce((a, b) => a * b, 1) + +console.log('Answer: ', res) + |