Files
2021-05-17 10:04:48 +03:00

138 lines
1.9 KiB
Python

tiles = """
Tile 2311:
..##.#..#.
##..#.....
#...##..#.
####.#...#
##.##.###.
##...#.###
.#.#.#..##
..#....#..
###...#.#.
..###..###
Tile 1951:
#.##...##.
#.####...#
.....#..##
#...######
.##.#....#
.###.#####
###.##.##.
.###....#.
..#.#..#.#
#...##.#..
Tile 1171:
####...##.
#..##.#..#
##.#..#.#.
.###.####.
..###.####
.##....##.
.#...####.
#.##.####.
####..#...
.....##...
Tile 1427:
###.##.#..
.#..#.##..
.#.##.#..#
#.#.#.##.#
....#...##
...##..##.
...#.#####
.#.####.#.
..#..###.#
..##.#..#.
Tile 1489:
##.#.#....
..##...#..
.##..##...
..#...#...
#####...#.
#..#.#.#.#
...#.#.#..
##.#...##.
..##.##.##
###.##.#..
Tile 2473:
#....####.
#..#.##...
#.##..#...
######.#.#
.#...#.#.#
.#########
.###.#..#.
########.#
##...##.#.
..###.#.#.
Tile 2971:
..#.#....#
#...###...
#.#.###...
##.##..#..
.#####..##
.#..####.#
#..#.#..#.
..####.###
..#.#.###.
...#.#.#.#
Tile 2729:
...#.#.#.#
####.#....
..#.#.....
....#..#.#
.##..##.#.
.#.####...
####.#.#..
##.####...
##..#.##..
#.##...##.
Tile 3079:
#.#.#####.
.#..######
..#.......
######....
####.#..#.
.#...#.##.
#.#####.##
..#.###...
..#.......
..#.###...
""".strip().split("\n\n")
with open("input") as f:
tiles = f.read().strip().split("\n\n")
tiles = [tile.split("\n") for tile in tiles]
tiles = {int(tile[0][5:-1]): tile[1:] for tile in tiles}
print(len(tiles[2311]), len(tiles[2311][0]))
print(len(tiles))
def borders(tile):
return [tile[0], tile[-1], ''.join(tilex[0] for tilex in tile), ''.join(tilex[-1] for tilex in tile)]
d = {i: [False]*4 for i in tiles}
for i, a in tiles.items():
ax = borders(a)
for j, b in tiles.items():
if i!=j:
b = borders(b)
for k, axx in enumerate(ax):
for bx in b:
if axx==bx or axx==bx[::-1]:
d[i][k] = True
break
from math import prod
print(prod(i for i, v in d.items() if v.count(False)==2))