summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-12-21 08:00:20 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-12-21 08:00:20 +0100
commit50fd0627cc74b72b48775e78271a11ab1bcd50dd (patch)
treedbdc36f0e23740e7f43b709bc45d0cc0bb8e8adf
parent00614a0fcedb45b9d986d92912c6ad84e7217e49 (diff)
downloadadvent_of_code_2020-50fd0627cc74b72b48775e78271a11ab1bcd50dd.tar.gz
advent_of_code_2020-50fd0627cc74b72b48775e78271a11ab1bcd50dd.tar.bz2
advent_of_code_2020-50fd0627cc74b72b48775e78271a11ab1bcd50dd.zip
day20
-rw-r--r--day20/data.js1731
-rw-r--r--day20/day20-1.js40
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)
+