Commit Diff


commit - 97d18b948329b91bd9148c09f1b4b6b0bcbe8f6a
commit + c6567752c59474c54d63edcfc1a3105d57f5a8b2
blob - /dev/null
blob + f19579d11d5ea7576da582735cb4cfa63c8923f3 (mode 644)
--- /dev/null
+++ input/25.txt
@@ -0,0 +1,3999 @@
+#####
+#####
+##.##
+#..#.
+.....
+.....
+.....
+
+.....
+..#..
+#.#.#
+###.#
+#####
+#####
+#####
+
+#####
+#####
+###.#
+#.#.#
+#.#.#
+....#
+.....
+
+.....
+#..#.
+##.#.
+####.
+#####
+#####
+#####
+
+#####
+##.#.
+##...
+#....
+#....
+.....
+.....
+
+.....
+.....
+.#...
+##..#
+###.#
+###.#
+#####
+
+.....
+..#..
+..##.
+#.##.
+#.###
+#.###
+#####
+
+#####
+#####
+####.
+.#.#.
+.....
+.....
+.....
+
+.....
+.....
+.#.#.
+##.##
+#####
+#####
+#####
+
+#####
+#####
+####.
+.##..
+..#..
+..#..
+.....
+
+.....
+.....
+..#.#
+.####
+#####
+#####
+#####
+
+.....
+.#..#
+.#..#
+.#..#
+###.#
+#####
+#####
+
+#####
+##.##
+.#.##
+.#..#
+....#
+....#
+.....
+
+#####
+#.###
+..###
+..#.#
+..#.#
+..#.#
+.....
+
+.....
+.....
+...#.
+...#.
+#..#.
+##.#.
+#####
+
+#####
+####.
+####.
+#.#..
+#.#..
+..#..
+.....
+
+#####
+##.##
+#...#
+#...#
+....#
+....#
+.....
+
+#####
+####.
+####.
+#.#..
+#.#..
+.....
+.....
+
+#####
+####.
+####.
+##.#.
+##.#.
+.#.#.
+.....
+
+#####
+#####
+.####
+.####
+.#.#.
+.....
+.....
+
+.....
+.....
+..#..
+..#..
+.##.#
+.####
+#####
+
+#####
+#.#.#
+#.#.#
+#.#.#
+#.#.#
+#....
+.....
+
+.....
+..#..
+..#..
+..#.#
+..###
+.####
+#####
+
+.....
+#..#.
+##.#.
+####.
+####.
+#####
+#####
+
+#####
+#.###
+#.#.#
+..#..
+.....
+.....
+.....
+
+.....
+...#.
+#..##
+##.##
+##.##
+##.##
+#####
+
+#####
+.###.
+.###.
+.###.
+.###.
+..#..
+.....
+
+#####
+#####
+#####
+#.###
+#.#.#
+....#
+.....
+
+.....
+.....
+#....
+#...#
+##.##
+#####
+#####
+
+.....
+....#
+#..##
+#..##
+##.##
+#####
+#####
+
+.....
+#...#
+#...#
+#...#
+##..#
+##.##
+#####
+
+#####
+##.##
+##.##
+##.##
+##..#
+#...#
+.....
+
+#####
+##.##
+#..##
+...##
+...##
+...#.
+.....
+
+.....
+#....
+##..#
+##.##
+#####
+#####
+#####
+
+#####
+.##.#
+.##.#
+.##..
+.#...
+.....
+.....
+
+#####
+#####
+####.
+##.#.
+.#...
+.....
+.....
+
+#####
+#####
+###.#
+##..#
+##..#
+#...#
+.....
+
+.....
+....#
+....#
+#..##
+#.###
+#.###
+#####
+
+#####
+#####
+##.#.
+##.#.
+##...
+#....
+.....
+
+#####
+#####
+#####
+.###.
+.#.#.
+.#.#.
+.....
+
+.....
+.....
+..#..
+#.#..
+#.#.#
+#.###
+#####
+
+.....
+#..#.
+##.#.
+##.##
+##.##
+##.##
+#####
+
+.....
+.....
+.....
+..#..
+.##.#
+.##.#
+#####
+
+#####
+.####
+.####
+.##.#
+.##.#
+..#..
+.....
+
+.....
+...#.
+#..#.
+#..#.
+##.##
+##.##
+#####
+
+.....
+..#..
+..#..
+.##.#
+#####
+#####
+#####
+
+#####
+.####
+..###
+..###
+...##
+...#.
+.....
+
+#####
+#.###
+#..##
+#..##
+#..#.
+#....
+.....
+
+.....
+...#.
+...#.
+#.##.
+#.##.
+#.##.
+#####
+
+.....
+.....
+#...#
+#...#
+#.#.#
+#####
+#####
+
+.....
+.....
+#...#
+#...#
+##..#
+###.#
+#####
+
+#####
+##.##
+#..##
+...#.
+.....
+.....
+.....
+
+#####
+#.##.
+#.##.
+#..#.
+...#.
+.....
+.....
+
+.....
+.#...
+.#...
+.#.#.
+##.#.
+####.
+#####
+
+#####
+#####
+#.###
+#.###
+..#.#
+..#.#
+.....
+
+#####
+##.##
+#..##
+#..##
+....#
+....#
+.....
+
+.....
+...#.
+...#.
+...#.
+.#.#.
+.#.##
+#####
+
+.....
+...#.
+#..#.
+#..##
+#.###
+#####
+#####
+
+#####
+####.
+.##..
+.##..
+..#..
+..#..
+.....
+
+#####
+####.
+.###.
+.##..
+.##..
+.#...
+.....
+
+#####
+##.#.
+.#...
+.#...
+.#...
+.....
+.....
+
+.....
+.....
+#.#.#
+###.#
+###.#
+###.#
+#####
+
+.....
+.#...
+.##.#
+.##.#
+###.#
+###.#
+#####
+
+.....
+..#..
+#.##.
+#.##.
+#.##.
+#.##.
+#####
+
+.....
+..#..
+#.#..
+#.##.
+#####
+#####
+#####
+
+.....
+...#.
+...##
+...##
+...##
+.#.##
+#####
+
+#####
+#####
+#####
+#.#.#
+#.#..
+.....
+.....
+
+.....
+.#..#
+.#..#
+.#.##
+.####
+.####
+#####
+
+.....
+...#.
+..##.
+..##.
+.###.
+####.
+#####
+
+#####
+###.#
+###.#
+.##.#
+.##..
+..#..
+.....
+
+.....
+#....
+#....
+#....
+#.#..
+#.##.
+#####
+
+#####
+##.##
+##.##
+.#.#.
+.#.#.
+.#...
+.....
+
+.....
+..#..
+..#.#
+#.#.#
+#.#.#
+#.#.#
+#####
+
+#####
+#.###
+#..##
+#..##
+#..##
+...#.
+.....
+
+#####
+####.
+###..
+.#...
+.#...
+.#...
+.....
+
+#####
+###.#
+###..
+###..
+##...
+#....
+.....
+
+#####
+.###.
+.##..
+.#...
+.#...
+.....
+.....
+
+.....
+..#..
+..#..
+..#..
+..##.
+.####
+#####
+
+#####
+#.###
+#..#.
+#....
+#....
+#....
+.....
+
+.....
+#....
+##...
+##..#
+##..#
+###.#
+#####
+
+#####
+#####
+#.#.#
+#.#..
+#.#..
+#....
+.....
+
+.....
+.....
+#....
+#....
+##.#.
+####.
+#####
+
+#####
+#.###
+...##
+...##
+...##
+....#
+.....
+
+.....
+.....
+#....
+#.#.#
+#.#.#
+#####
+#####
+
+.....
+...#.
+.#.#.
+##.#.
+#####
+#####
+#####
+
+.....
+.....
+.....
+#...#
+##.##
+#####
+#####
+
+#####
+####.
+#.##.
+..#..
+..#..
+.....
+.....
+
+.....
+...#.
+.#.#.
+#####
+#####
+#####
+#####
+
+.....
+.....
+.....
+..#.#
+#.#.#
+#####
+#####
+
+.....
+..#..
+.##..
+###..
+####.
+####.
+#####
+
+.....
+..#..
+#.##.
+#.###
+#####
+#####
+#####
+
+.....
+....#
+.#.##
+#####
+#####
+#####
+#####
+
+.....
+.....
+#....
+#...#
+#.#.#
+#####
+#####
+
+.....
+.#.#.
+.#.#.
+##.#.
+##.#.
+##.#.
+#####
+
+.....
+.....
+.....
+.....
+#.#..
+#.##.
+#####
+
+#####
+.###.
+..##.
+..#..
+.....
+.....
+.....
+
+.....
+.....
+#....
+#.#..
+###.#
+###.#
+#####
+
+#####
+.####
+.####
+..##.
+..##.
+...#.
+.....
+
+#####
+#.#.#
+#...#
+#....
+#....
+.....
+.....
+
+#####
+##.##
+##.##
+.#.##
+.#.#.
+.#.#.
+.....
+
+.....
+....#
+....#
+...##
+.#.##
+#####
+#####
+
+.....
+.....
+....#
+#..##
+##.##
+#####
+#####
+
+#####
+##.#.
+##...
+.#...
+.#...
+.....
+.....
+
+.....
+.#...
+.##..
+###..
+###..
+####.
+#####
+
+#####
+.####
+.####
+..##.
+...#.
+...#.
+.....
+
+#####
+#####
+##.##
+#..##
+#...#
+#...#
+.....
+
+.....
+.....
+...#.
+.#.#.
+.#.#.
+.###.
+#####
+
+.....
+.....
+....#
+....#
+.#..#
+##.##
+#####
+
+#####
+####.
+####.
+##.#.
+##.#.
+#..#.
+.....
+
+.....
+.....
+.#...
+.#...
+##.#.
+####.
+#####
+
+#####
+##.##
+##.##
+##.##
+.#.##
+....#
+.....
+
+#####
+.##.#
+.##..
+..#..
+..#..
+..#..
+.....
+
+#####
+##.##
+##.##
+#..#.
+#....
+.....
+.....
+
+#####
+#####
+.####
+.#.##
+...#.
+...#.
+.....
+
+.....
+.....
+...#.
+..##.
+#.###
+#####
+#####
+
+#####
+#####
+#####
+###.#
+##..#
+#....
+.....
+
+#####
+#####
+#.#.#
+#.#..
+#.#..
+#.#..
+.....
+
+#####
+#.#.#
+#.#.#
+..#.#
+.....
+.....
+.....
+
+.....
+.....
+...#.
+#..##
+##.##
+#####
+#####
+
+.....
+.#..#
+.#..#
+.#..#
+.#.##
+##.##
+#####
+
+#####
+.##.#
+..#.#
+.....
+.....
+.....
+.....
+
+.....
+...#.
+...#.
+.#.#.
+##.#.
+#####
+#####
+
+.....
+.....
+....#
+..#.#
+#.#.#
+#####
+#####
+
+.....
+.....
+.....
+#...#
+#..##
+#.###
+#####
+
+#####
+#.###
+..#.#
+..#.#
+....#
+....#
+.....
+
+.....
+.....
+..#.#
+..#.#
+.####
+#####
+#####
+
+#####
+###.#
+###.#
+###.#
+#.#..
+#.#..
+.....
+
+.....
+....#
+..#.#
+..###
+.####
+#####
+#####
+
+.....
+....#
+.#.##
+.####
+.####
+.####
+#####
+
+#####
+##.##
+##.##
+.#.##
+.#.#.
+.#...
+.....
+
+.....
+#....
+#.#..
+#.#.#
+#.#.#
+#.###
+#####
+
+.....
+.....
+#....
+##.#.
+####.
+####.
+#####
+
+.....
+..#..
+..#.#
+.####
+.####
+#####
+#####
+
+.....
+...#.
+...#.
+.#.##
+.#.##
+.#.##
+#####
+
+#####
+.####
+.####
+..#.#
+..#.#
+..#..
+.....
+
+.....
+#....
+#....
+#.#.#
+#.#.#
+###.#
+#####
+
+.....
+.#...
+.#..#
+###.#
+###.#
+#####
+#####
+
+#####
+#.###
+#.###
+..###
+...#.
+.....
+.....
+
+.....
+..#..
+#.#..
+###..
+####.
+####.
+#####
+
+.....
+.....
+..#..
+..#..
+..#.#
+#.###
+#####
+
+.....
+.....
+....#
+#.#.#
+###.#
+#####
+#####
+
+.....
+.....
+.#.#.
+.#.#.
+.#.##
+.####
+#####
+
+.....
+.#...
+.##..
+####.
+####.
+#####
+#####
+
+.....
+.....
+.....
+#....
+#.#.#
+###.#
+#####
+
+#####
+#####
+.##.#
+.##..
+.#...
+.....
+.....
+
+#####
+#####
+#####
+#.##.
+#.##.
+..#..
+.....
+
+#####
+##.#.
+##...
+##...
+##...
+#....
+.....
+
+#####
+#####
+#####
+#####
+#.#.#
+....#
+.....
+
+#####
+###.#
+##..#
+##..#
+#...#
+#...#
+.....
+
+#####
+.####
+.####
+.#.##
+.#.##
+.#..#
+.....
+
+.....
+.#...
+.##.#
+###.#
+#####
+#####
+#####
+
+.....
+.....
+.....
+#.#.#
+###.#
+#####
+#####
+
+.....
+.....
+.#...
+.#..#
+.#..#
+##.##
+#####
+
+#####
+#.###
+#..##
+...#.
+.....
+.....
+.....
+
+#####
+#####
+#####
+##.##
+#..##
+#..#.
+.....
+
+#####
+#####
+#.##.
+..##.
+...#.
+...#.
+.....
+
+.....
+..#..
+..##.
+#.##.
+####.
+#####
+#####
+
+#####
+#.###
+#.##.
+#.##.
+..##.
+...#.
+.....
+
+#####
+#####
+.####
+.###.
+..#..
+..#..
+.....
+
+.....
+#.#..
+#.##.
+#.##.
+#.###
+#####
+#####
+
+#####
+##.##
+#..#.
+#....
+#....
+.....
+.....
+
+#####
+####.
+#.##.
+#..#.
+#....
+.....
+.....
+
+#####
+#####
+#####
+##.##
+#..#.
+#....
+.....
+
+.....
+..#.#
+..#.#
+#.#.#
+#.#.#
+#.###
+#####
+
+#####
+#.###
+#..##
+#..##
+...##
+....#
+.....
+
+#####
+##.##
+##.##
+##.#.
+.#...
+.#...
+.....
+
+#####
+#.###
+#.###
+#.#.#
+..#.#
+..#..
+.....
+
+.....
+.....
+...#.
+..##.
+.###.
+.####
+#####
+
+#####
+#####
+##.##
+##.##
+#..#.
+.....
+.....
+
+#####
+###.#
+###.#
+###.#
+.#..#
+....#
+.....
+
+.....
+.....
+.....
+#.#.#
+#.#.#
+#####
+#####
+
+.....
+....#
+.#..#
+###.#
+###.#
+###.#
+#####
+
+#####
+.####
+..#.#
+..#..
+..#..
+..#..
+.....
+
+.....
+..#.#
+..###
+..###
+.####
+#####
+#####
+
+#####
+.####
+.###.
+..##.
+..#..
+..#..
+.....
+
+.....
+..#..
+..#..
+..#.#
+..###
+#.###
+#####
+
+#####
+.###.
+.#.#.
+.#.#.
+...#.
+...#.
+.....
+
+.....
+.#...
+.#...
+##.#.
+##.#.
+##.#.
+#####
+
+#####
+#####
+.#.##
+...##
+....#
+....#
+.....
+
+.....
+..#..
+..#..
+..#..
+..#..
+.###.
+#####
+
+#####
+#####
+#####
+.#.#.
+.#.#.
+.....
+.....
+
+#####
+#####
+#####
+###.#
+#.#.#
+#.#.#
+.....
+
+#####
+#####
+#.###
+...#.
+...#.
+...#.
+.....
+
+#####
+#####
+#.#.#
+..#.#
+..#..
+.....
+.....
+
+.....
+.....
+.#..#
+.##.#
+.##.#
+###.#
+#####
+
+#####
+###.#
+###.#
+##..#
+##..#
+#...#
+.....
+
+.....
+.....
+..#..
+#.#..
+###..
+####.
+#####
+
+#####
+.#.##
+.#.#.
+.....
+.....
+.....
+.....
+
+#####
+#####
+###.#
+##..#
+.#..#
+.#..#
+.....
+
+#####
+#####
+#####
+.#.##
+.#.#.
+.#.#.
+.....
+
+#####
+#.###
+..##.
+..#..
+.....
+.....
+.....
+
+#####
+###.#
+#.#.#
+.....
+.....
+.....
+.....
+
+#####
+###.#
+.##.#
+.#..#
+.#..#
+.#..#
+.....
+
+.....
+....#
+#...#
+#...#
+#..##
+#.###
+#####
+
+#####
+#####
+#.#.#
+#...#
+#...#
+.....
+.....
+
+.....
+....#
+...##
+...##
+..###
+#.###
+#####
+
+#####
+#####
+#.##.
+...#.
+...#.
+...#.
+.....
+
+#####
+.####
+.####
+.#.#.
+.#...
+.#...
+.....
+
+#####
+##.#.
+##...
+#....
+.....
+.....
+.....
+
+.....
+..#..
+..#..
+.##..
+.##.#
+#####
+#####
+
+.....
+#.#..
+#.#.#
+#####
+#####
+#####
+#####
+
+.....
+.....
+...#.
+#.##.
+#.##.
+#.###
+#####
+
+#####
+#.###
+#.#.#
+#.#.#
+..#..
+..#..
+.....
+
+#####
+###.#
+###.#
+.##.#
+.##.#
+..#.#
+.....
+
+#####
+.####
+.####
+.##.#
+.##..
+..#..
+.....
+
+.....
+.#.#.
+.###.
+####.
+#####
+#####
+#####
+
+.....
+..#..
+.##..
+###..
+###.#
+###.#
+#####
+
+#####
+#####
+#.#.#
+#....
+#....
+.....
+.....
+
+#####
+#####
+#.##.
+#.##.
+#..#.
+...#.
+.....
+
+.....
+#.#..
+#.#.#
+#.###
+#####
+#####
+#####
+
+.....
+.#.#.
+.#.#.
+.#.#.
+.###.
+.####
+#####
+
+.....
+.#...
+.##..
+.##.#
+.##.#
+.####
+#####
+
+#####
+.###.
+.#.#.
+.#...
+.#...
+.#...
+.....
+
+.....
+.#...
+.#.#.
+.#.#.
+##.##
+#####
+#####
+
+.....
+..#..
+#.#.#
+#.#.#
+#.#.#
+#####
+#####
+
+#####
+##.##
+.#.#.
+.#.#.
+.#.#.
+.#.#.
+.....
+
+.....
+#.#..
+#.#.#
+###.#
+#####
+#####
+#####
+
+.....
+.#...
+.#.#.
+.#.#.
+.###.
+####.
+#####
+
+#####
+#.##.
+#.##.
+#.##.
+#.#..
+#.#..
+.....
+
+#####
+#.##.
+..##.
+..##.
+..##.
+...#.
+.....
+
+.....
+#...#
+#.#.#
+#.#.#
+#.###
+#.###
+#####
+
+#####
+#####
+.###.
+.###.
+..##.
+...#.
+.....
+
+#####
+#####
+#####
+####.
+.##..
+.#...
+.....
+
+.....
+#....
+#....
+##..#
+##..#
+###.#
+#####
+
+#####
+#####
+#####
+#.###
+#.###
+#..#.
+.....
+
+#####
+##.##
+##.##
+.#..#
+.....
+.....
+.....
+
+#####
+#.##.
+#.##.
+..##.
+..#..
+.....
+.....
+
+#####
+#.##.
+#.##.
+#.#..
+#....
+.....
+.....
+
+.....
+.#...
+.#...
+.##.#
+###.#
+###.#
+#####
+
+.....
+.....
+.#...
+##..#
+###.#
+#####
+#####
+
+#####
+##.##
+.#..#
+.#..#
+.#...
+.#...
+.....
+
+.....
+#....
+##...
+##..#
+##..#
+##.##
+#####
+
+.....
+.....
+#....
+#...#
+##..#
+###.#
+#####
+
+.....
+.....
+#....
+#....
+#.#.#
+#.###
+#####
+
+.....
+.....
+.....
+#.#.#
+#.###
+#.###
+#####
+
+#####
+#####
+#.###
+..###
+..#.#
+..#..
+.....
+
+.....
+#...#
+#...#
+#.#.#
+#.#.#
+#.###
+#####
+
+.....
+....#
+....#
+#...#
+#...#
+##.##
+#####
+
+#####
+#####
+.####
+.####
+..#.#
+.....
+.....
+
+.....
+.....
+.....
+.....
+.#.#.
+.####
+#####
+
+#####
+##.##
+#..##
+...##
+....#
+....#
+.....
+
+#####
+##.#.
+.#.#.
+...#.
+.....
+.....
+.....
+
+#####
+#####
+##.##
+##.##
+.#.#.
+.#...
+.....
+
+.....
+.....
+...#.
+...#.
+.#.#.
+.####
+#####
+
+.....
+...#.
+#..#.
+#..#.
+#.##.
+####.
+#####
+
+#####
+####.
+###..
+##...
+.#...
+.....
+.....
+
+.....
+..#.#
+..###
+#.###
+#####
+#####
+#####
+
+#####
+#.###
+#.###
+#.#.#
+#.#.#
+....#
+.....
+
+.....
+.#..#
+##..#
+##.##
+#####
+#####
+#####
+
+#####
+#.###
+#.#.#
+#.#.#
+....#
+....#
+.....
+
+#####
+#.###
+#.#.#
+..#.#
+..#.#
+..#.#
+.....
+
+.....
+...#.
+..##.
+..###
+#.###
+#####
+#####
+
+.....
+.....
+..#..
+..##.
+.####
+#####
+#####
+
+#####
+#####
+#.#.#
+#.#.#
+#...#
+#....
+.....
+
+#####
+#.###
+#.###
+#..##
+...##
+...#.
+.....
+
+.....
+....#
+#...#
+#...#
+#.#.#
+#####
+#####
+
+.....
+#....
+#....
+#..#.
+#..#.
+##.##
+#####
+
+#####
+##.##
+##.##
+#..##
+#..#.
+...#.
+.....
+
+#####
+####.
+#.#..
+#.#..
+#....
+#....
+.....
+
+.....
+#....
+#....
+##.#.
+##.#.
+##.#.
+#####
+
+#####
+.####
+.####
+.#.#.
+...#.
+...#.
+.....
+
+#####
+###.#
+###..
+.#...
+.#...
+.....
+.....
+
+#####
+#####
+#.###
+#.#.#
+....#
+....#
+.....
+
+#####
+#####
+.####
+.##.#
+.##..
+.#...
+.....
+
+.....
+.....
+.#.#.
+.####
+.####
+.####
+#####
+
+#####
+####.
+#.##.
+#.##.
+..#..
+.....
+.....
+
+.....
+.....
+.#.#.
+.#.##
+#####
+#####
+#####
+
+#####
+#####
+##.##
+##..#
+#...#
+.....
+.....
+
+.....
+..#.#
+..#.#
+.####
+#####
+#####
+#####
+
+#####
+##.##
+#..##
+...##
+...##
+....#
+.....
+
+.....
+.#...
+##.#.
+##.#.
+####.
+#####
+#####
+
+.....
+...#.
+...#.
+#..#.
+#..#.
+##.##
+#####
+
+#####
+#.###
+#..##
+#...#
+....#
+.....
+.....
+
+.....
+.....
+...#.
+..##.
+#.###
+#.###
+#####
+
+#####
+#####
+####.
+####.
+#.##.
+#.#..
+.....
+
+#####
+#####
+#.###
+#.##.
+#.#..
+#.#..
+.....
+
+.....
+.....
+.....
+#...#
+#...#
+#.#.#
+#####
+
+#####
+###.#
+###.#
+#.#..
+#.#..
+..#..
+.....
+
+#####
+#####
+###.#
+##..#
+.#..#
+.....
+.....
+
+.....
+.....
+#....
+#.#..
+###.#
+#####
+#####
+
+#####
+####.
+####.
+###..
+##...
+.#...
+.....
+
+.....
+...#.
+.#.#.
+##.#.
+##.#.
+##.##
+#####
+
+.....
+...#.
+...#.
+...##
+..###
+.####
+#####
+
+.....
+.....
+.#...
+.##..
+###..
+###.#
+#####
+
+.....
+.....
+#....
+#.#.#
+#.###
+#.###
+#####
+
+.....
+.....
+...#.
+..###
+#.###
+#####
+#####
+
+.....
+#.#..
+#.##.
+#.###
+#.###
+#####
+#####
+
+.....
+....#
+....#
+.#..#
+.#..#
+###.#
+#####
+
+#####
+#.###
+..##.
+..#..
+..#..
+.....
+.....
+
+.....
+.....
+...#.
+..##.
+..##.
+#.##.
+#####
+
+.....
+#....
+#..#.
+#..#.
+#..#.
+##.##
+#####
+
+.....
+..#..
+.##..
+###..
+###..
+####.
+#####
+
+.....
+...#.
+...##
+..###
+..###
+.####
+#####
+
+.....
+...#.
+#..#.
+#..#.
+#..##
+##.##
+#####
+
+.....
+#.#.#
+###.#
+###.#
+#####
+#####
+#####
+
+#####
+#####
+.####
+.####
+.###.
+.#.#.
+.....
+
+#####
+.##.#
+..#.#
+....#
+....#
+....#
+.....
+
+.....
+....#
+.#..#
+##..#
+###.#
+###.#
+#####
+
+#####
+#####
+.#.##
+...#.
+...#.
+...#.
+.....
+
+#####
+#.###
+..###
+...##
+...#.
+...#.
+.....
+
+#####
+###.#
+#.#.#
+..#.#
+..#.#
+..#.#
+.....
+
+#####
+####.
+####.
+##.#.
+#..#.
+#..#.
+.....
+
+.....
+.....
+..#..
+..##.
+.###.
+.###.
+#####
+
+#####
+###.#
+#.#.#
+#.#..
+#.#..
+#....
+.....
+
+#####
+#####
+.####
+.##.#
+.#...
+.....
+.....
+
+.....
+....#
+#.#.#
+#.#.#
+#####
+#####
+#####
+
+.....
+.....
+.....
+...#.
+.#.#.
+.###.
+#####
+
+#####
+###.#
+###.#
+.##.#
+..#..
+..#..
+.....
+
+#####
+###.#
+###.#
+###..
+###..
+#.#..
+.....
+
+.....
+...#.
+#..##
+#.###
+#.###
+#####
+#####
+
+#####
+#####
+####.
+.###.
+..#..
+.....
+.....
+
+.....
+.#.#.
+##.#.
+##.#.
+##.##
+#####
+#####
+
+.....
+#...#
+#.#.#
+#.#.#
+###.#
+#####
+#####
+
+#####
+#####
+###.#
+#.#.#
+..#.#
+..#..
+.....
+
+#####
+#.###
+#..##
+#..#.
+...#.
+...#.
+.....
+
+.....
+....#
+....#
+.#.##
+##.##
+##.##
+#####
+
+#####
+#.#.#
+..#.#
+..#.#
+..#..
+..#..
+.....
+
+#####
+#####
+.####
+..#.#
+..#.#
+....#
+.....
+
+#####
+#####
+.####
+.#.#.
+.#.#.
+.....
+.....
+
+.....
+....#
+....#
+....#
+...##
+#.###
+#####
+
+.....
+.....
+.#...
+.#...
+.#.#.
+####.
+#####
+
+.....
+..#..
+#.#..
+####.
+####.
+####.
+#####
+
+#####
+#.###
+#.##.
+#.#..
+#....
+#....
+.....
+
+#####
+#####
+.####
+.###.
+..##.
+...#.
+.....
+
+.....
+.....
+...#.
+...#.
+..##.
+.####
+#####
+
+#####
+###.#
+###.#
+###.#
+##...
+#....
+.....
+
+.....
+.....
+.....
+.#.#.
+.#.##
+##.##
+#####
+
+.....
+..#..
+.###.
+.###.
+.###.
+####.
+#####
+
+.....
+.....
+#..#.
+#..#.
+#.###
+#####
+#####
+
+.....
+...#.
+..###
+.####
+.####
+.####
+#####
+
+.....
+.#...
+##.#.
+##.#.
+##.#.
+##.##
+#####
+
+.....
+.#...
+.#...
+.#.#.
+##.#.
+##.#.
+#####
+
+#####
+.##.#
+.#..#
+....#
+....#
+.....
+.....
+
+#####
+#####
+#.#.#
+#....
+.....
+.....
+.....
+
+.....
+..#..
+..#..
+#.#.#
+#.#.#
+#.#.#
+#####
+
+#####
+####.
+####.
+#.##.
+#.##.
+#..#.
+.....
+
+#####
+####.
+####.
+.###.
+.#.#.
+.....
+.....
+
+#####
+###.#
+##..#
+.#...
+.#...
+.....
+.....
+
+#####
+#####
+#####
+##.#.
+.#...
+.....
+.....
+
+#####
+##.##
+.#.##
+.#.##
+.#.#.
+.#...
+.....
+
+.....
+.....
+.....
+....#
+..#.#
+#.###
+#####
+
+.....
+.....
+....#
+..#.#
+.##.#
+.##.#
+#####
+
+#####
+##.##
+##.##
+##.#.
+#....
+#....
+.....
+
+#####
+.#.##
+.#.##
+.#..#
+.....
+.....
+.....
+
+.....
+.....
+....#
+..#.#
+..###
+.####
+#####
+
+.....
+....#
+#.#.#
+#.###
+#.###
+#.###
+#####
+
+.....
+#.#..
+#.#..
+#.##.
+#.##.
+#.###
+#####
+
+.....
+#..#.
+#.##.
+####.
+#####
+#####
+#####
+
+#####
+#.#.#
+#...#
+.....
+.....
+.....
+.....
+
+#####
+#####
+#.###
+..###
+...#.
+.....
+.....
+
+#####
+#####
+###.#
+#.#.#
+..#..
+.....
+.....
+
+.....
+.#...
+.#...
+.#.#.
+####.
+####.
+#####
+
+#####
+.###.
+..#..
+.....
+.....
+.....
+.....
+
+.....
+.....
+...#.
+...#.
+..##.
+.###.
+#####
+
+#####
+.####
+.####
+.#.##
+.#.##
+....#
+.....
+
+#####
+#####
+.#.#.
+.#.#.
+.#.#.
+.....
+.....
+
+#####
+#####
+##.#.
+##.#.
+#..#.
+.....
+.....
+
+#####
+###.#
+.##.#
+.##.#
+.#..#
+.#..#
+.....
+
+#####
+#.###
+#..##
+....#
+.....
+.....
+.....
+
+#####
+##.##
+.#.#.
+.....
+.....
+.....
+.....
+
+#####
+#####
+.###.
+.###.
+.#.#.
+.#...
+.....
+
+#####
+##.##
+##..#
+.#..#
+....#
+....#
+.....
+
+.....
+#....
+#.#..
+#.#..
+#.#..
+####.
+#####
+
+#####
+####.
+####.
+####.
+.###.
+..#..
+.....
+
+#####
+##.##
+.#..#
+.#...
+.#...
+.....
+.....
+
+.....
+..#..
+..##.
+#.###
+#.###
+#####
+#####
+
+#####
+#####
+.####
+.#.#.
+.#...
+.....
+.....
+
+#####
+.#.##
+.#.##
+.#..#
+.#..#
+.....
+.....
+
+.....
+.....
+..#..
+.###.
+.###.
+.###.
+#####
+
+.....
+.#...
+.##..
+.###.
+.###.
+#####
+#####
+
+#####
+.####
+..#.#
+..#.#
+.....
+.....
+.....
+
+.....
+.....
+..#..
+#.#..
+#.#.#
+#.#.#
+#####
+
+#####
+####.
+##.#.
+.#.#.
+.#.#.
+.#...
+.....
+
+.....
+.#.#.
+.#.#.
+.###.
+.###.
+.####
+#####
+
+.....
+.....
+.#..#
+.#.##
+.####
+.####
+#####
+
+#####
+#####
+###.#
+##..#
+##...
+.#...
+.....
+
+.....
+#....
+#....
+#.#..
+#.##.
+#.##.
+#####
+
+.....
+..#.#
+#.###
+#.###
+#####
+#####
+#####
+
+.....
+....#
+...##
+#.###
+#.###
+#####
+#####
+
+.....
+..#..
+..#..
+.##..
+####.
+####.
+#####
+
+#####
+####.
+.#.#.
+.#.#.
+...#.
+.....
+.....
+
+#####
+.#.#.
+...#.
+...#.
+...#.
+.....
+.....
+
+#####
+#####
+###.#
+.#...
+.....
+.....
+.....
+
+.....
+#....
+#..#.
+#..##
+#.###
+#####
+#####
+
+.....
+.....
+.....
+#.#..
+#.#.#
+###.#
+#####
+
+#####
+#####
+####.
+.#.#.
+.#...
+.#...
+.....
+
+#####
+###.#
+#.#..
+.....
+.....
+.....
+.....
+
+#####
+##.##
+##..#
+.#..#
+.#...
+.....
+.....
+
+#####
+##.##
+##..#
+##..#
+##..#
+.#..#
+.....
+
+.....
+.....
+#...#
+##..#
+##.##
+##.##
+#####
+
+#####
+####.
+####.
+####.
+.#.#.
+...#.
+.....
+
+.....
+.#..#
+.#..#
+.#..#
+##.##
+#####
+#####
+
+#####
+####.
+.##..
+..#..
+..#..
+.....
+.....
+
+.....
+.....
+.....
+.#...
+.#.#.
+####.
+#####
+
+.....
+#....
+#....
+#....
+#.#.#
+#.#.#
+#####
+
+#####
+#####
+#.##.
+#..#.
+...#.
+...#.
+.....
+
+.....
+.#..#
+##..#
+##..#
+##.##
+#####
+#####
+
+#####
+####.
+####.
+####.
+.##..
+.#...
+.....
+
+.....
+.....
+..#..
+.##.#
+.####
+#####
+#####
+
+#####
+####.
+#.#..
+#....
+.....
+.....
+.....
+
+.....
+....#
+....#
+..#.#
+..#.#
+.####
+#####
+
+.....
+.#.#.
+.#.#.
+.#.##
+.####
+.####
+#####
+
+.....
+.#...
+.#..#
+.#..#
+.#..#
+###.#
+#####
+
+#####
+#.#.#
+..#..
+..#..
+..#..
+..#..
+.....
+
+.....
+...#.
+...#.
+..##.
+#.##.
+#.###
+#####
+
+.....
+.....
+#....
+#..#.
+#.###
+#.###
+#####
+
+.....
+.....
+...#.
+...#.
+#.##.
+####.
+#####
+
+#####
+#####
+#.##.
+...#.
+...#.
+.....
+.....
+
+.....
+#....
+##...
+##.#.
+#####
+#####
+#####
+
+.....
+.....
+...#.
+.#.#.
+##.##
+##.##
+#####
+
+.....
+.#.#.
+.#.#.
+.#.#.
+.#.#.
+##.##
+#####
+
+.....
+.#...
+.#...
+##...
+##.#.
+##.##
+#####
+
+#####
+#####
+###.#
+##..#
+#....
+#....
+.....
+
+.....
+....#
+....#
+....#
+#.#.#
+#####
+#####
+
+.....
+....#
+.#..#
+.##.#
+.##.#
+#####
+#####
+
+.....
+..#.#
+..#.#
+..###
+..###
+.####
+#####
+
+.....
+...#.
+...#.
+...#.
+..##.
+.###.
+#####
+
+#####
+.###.
+.#.#.
+.#.#.
+.#.#.
+.#...
+.....
+
+.....
+.#.#.
+.###.
+.###.
+.####
+#####
+#####
+
+#####
+##.##
+##.#.
+#....
+.....
+.....
+.....
+
+#####
+##.##
+##.##
+##.##
+#..##
+#...#
+.....
+
+.....
+.....
+.#.#.
+.###.
+.###.
+.####
+#####
+
+.....
+.#...
+##...
+##...
+###.#
+#####
+#####
+
+#####
+#####
+.####
+.#.##
+.#.#.
+...#.
+.....
+
+.....
+.....
+.....
+.#..#
+.#.##
+.#.##
+#####
+
+#####
+#####
+##.##
+#...#
+#...#
+#...#
+.....
+
+.....
+....#
+...##
+..###
+#.###
+#.###
+#####
+
+#####
+####.
+#.##.
+#.#..
+#.#..
+#.#..
+.....
+
+#####
+#.###
+..###
+..#.#
+..#.#
+..#..
+.....
+
+#####
+#####
+#####
+.####
+.#.##
+.#..#
+.....
+
+.....
+.#..#
+##..#
+##..#
+###.#
+###.#
+#####
+
+#####
+#####
+###.#
+###.#
+#.#.#
+.....
+.....
+
+#####
+#####
+##.#.
+##...
+#....
+.....
+.....
+
+#####
+##.##
+##.##
+##.##
+##.#.
+.#...
+.....
+
+.....
+...#.
+.#.#.
+##.#.
+##.##
+#####
+#####
+
+#####
+.####
+..###
+..###
+..##.
+..#..
+.....
+
+#####
+.#.##
+.#..#
+.#..#
+.#...
+.#...
+.....
+
+.....
+.....
+.....
+..#.#
+.##.#
+.####
+#####
+
+.....
+.#...
+.##.#
+.####
+.####
+#####
+#####
+
+#####
+.###.
+.###.
+.#.#.
+.#...
+.#...
+.....
+
+#####
+.#.##
+...#.
+...#.
+.....
+.....
+.....
+
+.....
+.#...
+.##..
+.##..
+.###.
+####.
+#####
+
+#####
+###.#
+##..#
+##..#
+.#..#
+.#...
+.....
+
+.....
+..#..
+.##.#
+###.#
+#####
+#####
+#####
+
+#####
+#####
+###.#
+##...
+.#...
+.#...
+.....
+
+.....
+..#..
+..#..
+..#..
+.##..
+.###.
+#####
+
+.....
+...#.
+.#.#.
+.#.##
+.#.##
+.#.##
+#####
+
+#####
+###.#
+##..#
+#....
+#....
+#....
+.....
+
+#####
+#####
+.##.#
+.#..#
+.#..#
+.#...
+.....
+
+.....
+.#...
+###..
+###..
+####.
+####.
+#####
+
+.....
+....#
+#..##
+#.###
+#.###
+#####
+#####
+
+#####
+.####
+.#.##
+.#.#.
+.#...
+.#...
+.....
+
+.....
+....#
+.#.##
+.#.##
+.#.##
+.#.##
+#####
+
+#####
+#.#.#
+#.#.#
+#.#..
+#....
+.....
+.....
+
+.....
+#.#..
+#.#..
+#.##.
+####.
+#####
+#####
+
+.....
+.....
+.....
+#....
+#...#
+#.#.#
+#####
+
+#####
+#####
+###.#
+.##.#
+.##.#
+..#.#
+.....
+
+#####
+.####
+.####
+.###.
+.#.#.
+.#.#.
+.....
+
+.....
+..#..
+#.#..
+#.#..
+#.#.#
+#####
+#####
+
+#####
+#.###
+#.#.#
+#.#.#
+#.#.#
+..#..
+.....
+
+.....
+.#.#.
+##.#.
+##.##
+##.##
+##.##
+#####
+
+.....
+....#
+#..##
+##.##
+##.##
+##.##
+#####
+
+.....
+.....
+...#.
+#.##.
+#####
+#####
+#####
+
+#####
+####.
+###..
+.##..
+.#...
+.#...
+.....
+
+#####
+.#.##
+.#..#
+.#..#
+.#..#
+.#..#
+.....
+
+.....
+.....
+.....
+.....
+.#...
+.##.#
+#####
+
+.....
+...#.
+...#.
+.#.#.
+##.#.
+##.##
+#####
+
+.....
+.....
+.#.#.
+.###.
+.###.
+####.
+#####
+
+#####
+#####
+#.###
+#..#.
+...#.
+...#.
+.....
+
+.....
+..#..
+..#..
+#.#..
+#.#.#
+#####
+#####
+
+#####
+###.#
+###.#
+###.#
+.#...
+.....
+.....
+
+.....
+...#.
+.#.#.
+.#.##
+.#.##
+#####
+#####
+
+.....
+..#..
+..#..
+..##.
+..##.
+#.##.
+#####
+
+#####
+#.###
+..###
+...##
+...##
+....#
+.....
+
+.....
+.#..#
+.#..#
+##.##
+##.##
+#####
+#####
+
+.....
+#....
+#....
+##...
+###..
+###.#
+#####
+
+.....
+.#...
+###..
+###..
+###..
+####.
+#####
+
+.....
+...#.
+...#.
+...##
+#.###
+#####
+#####
+
+#####
+#####
+#####
+#####
+##.#.
+.#...
+.....
+
+#####
+##.##
+##.##
+##.##
+#...#
+#...#
+.....
+
+#####
+.####
+.####
+.#.##
+.#..#
+.#...
+.....
+
+.....
+..#..
+..#..
+..#..
+#.##.
+####.
+#####
+
+.....
+.....
+.#...
+.##..
+.###.
+.####
+#####
+
+#####
+#.###
+#..##
+#..##
+#..##
+....#
+.....
+
+#####
+#.#.#
+#.#.#
+#...#
+#...#
+.....
+.....
+
+#####
+#####
+#.###
+#..##
+#...#
+#...#
+.....
+
+#####
+#####
+#####
+.#.##
+...##
+....#
+.....
+
+.....
+.....
+.#..#
+###.#
+###.#
+###.#
+#####
+
+#####
+#####
+###.#
+#.#.#
+..#.#
+.....
+.....
+
+.....
+.#...
+##..#
+##.##
+#####
+#####
+#####
+
+#####
+.####
+.####
+.####
+.#.#.
+.#...
+.....
+
+.....
+#...#
+##.##
+##.##
+#####
+#####
+#####
+
+#####
+#####
+###.#
+.##..
+..#..
+..#..
+.....
+
+.....
+.#...
+.##..
+.##..
+.##.#
+###.#
+#####
+
+.....
+....#
+....#
+..#.#
+..#.#
+#.###
+#####
+
+.....
+...#.
+.#.#.
+##.##
+#####
+#####
+#####
+
+#####
+#####
+#####
+#####
+#.#.#
+#...#
+.....
+
+.....
+.#...
+##...
+###..
+###..
+###.#
+#####
+
+#####
+.#.##
+.#..#
+.#...
+.....
+.....
+.....
+
+#####
+#####
+#####
+.####
+.#.#.
+.#.#.
+.....
blob - /dev/null
blob + 3926fab46ab2614dcc96c3db1e7d94d4f11321b1 (mode 644)
--- /dev/null
+++ src/day-25.lisp
@@ -0,0 +1,40 @@
+(defpackage #:aoc/day-25
+  (:use #:cl #:aoc/utils)
+  (:export
+   #:key-fits-p
+   #:day-25))
+(in-package #:aoc/day-25)
+
+(defun heightmap (map)
+  (loop for x from 0 below (input-map-width map)
+        collect (loop for y from 0 below (input-map-height map)
+                      when (char= (map-cell map (cons x y)) #\#)
+                        sum 1)))
+
+(defun parse-input (input)
+  (loop with locks = nil
+        with keys = nil
+        with max-height = 0
+        for map = (make-map input)
+        until (null map)
+        for height = (input-map-height map)
+        when (> height max-height)
+          do (setf max-height height)
+        if (char= (map-cell map (cons 0 0)) #\.)
+          do (push (heightmap map) keys)
+        else
+          do (push (heightmap map) locks)
+        finally (return (values locks keys max-height))))
+
+(defun key-fits-p (lock key max-height)
+  (loop for lock-v in lock
+        for key-v in key
+        always (<= (+ lock-v key-v) max-height)))
+
+(defun day-25 (input)
+  (multiple-value-bind (locks keys max-height)
+      (parse-input input)
+    (loop for lock in locks
+          sum (loop for key in keys
+                    when (key-fits-p lock key max-height)
+                      sum 1))))
blob - /dev/null
blob + c074da7b1bd2eb346ff9c504fd5044c76a417102 (mode 644)
--- /dev/null
+++ t/day-25.lisp
@@ -0,0 +1,52 @@
+(defpackage #:aoc-test/day-25
+  (:use #:cl #:lisp-unit2)
+  (:import-from #:aoc/day-25))
+(in-package #:aoc-test/day-25)
+
+(define-test test-day-25
+    ()
+  (assert-eq nil (aoc/day-25:key-fits-p '(0 5 3 4 3) '(5 0 2 1 3) 5))
+  (assert-eq nil (aoc/day-25:key-fits-p '(0 5 3 4 3) '(4 3 4 0 2) 5))
+  (assert-eq t   (aoc/day-25:key-fits-p '(0 5 3 4 3) '(3 0 2 0 1) 5))
+  (assert-eq nil (aoc/day-25:key-fits-p '(1 2 0 5 3) '(5 0 2 1 3) 5))
+  (assert-eq t   (aoc/day-25:key-fits-p '(1 2 0 5 3) '(4 3 4 0 2) 5))
+  (assert-eq t   (aoc/day-25:key-fits-p '(1 2 0 5 3) '(3 0 2 0 1) 5))
+  (assert= 3 (aoc:run-day 25 "#####
+.####
+.####
+.####
+.#.#.
+.#...
+.....
+
+#####
+##.##
+.#.##
+...##
+...#.
+...#.
+.....
+
+.....
+#....
+#....
+#...#
+#.#.#
+#.###
+#####
+
+.....
+.....
+#.#..
+###..
+###.#
+###.#
+#####
+
+.....
+.....
+.....
+#....
+#.#..
+#.#.#
+#####")))