diff --git a/d20.py b/d20.py new file mode 100755 index 0000000..2272eae --- /dev/null +++ b/d20.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python3 + +from sys import argv +from math import sqrt + +tiles = {} +for tile in map(lambda x: x.splitlines(), open(argv[1]).read().strip().split("\n\n")): + tiles[int(tile[0][5:-1])] = "".join(tile[1:]) + +size = int(sqrt(len(tiles))) +tsize = int(sqrt(len(next(iter(tiles.values()))))) + +sides = {} +sides_rev = {} +for tile in tiles: + data = tiles[tile] + up = data[0:tsize] + down = data[tsize ** 2 - tsize:tsize ** 2] + left = "" + right = "" + for x in range(tsize): + left += data[tsize * x] + right += data[tsize * x + tsize - 1] + up = up[::-1] + right = right[::-1] + + sides[tile] = [ + up, left, down, right, + up[::-1], left[::-1], down[::-1], right[::-1] + ] + for i, side in enumerate(sides[tile]): + if side not in sides_rev: + sides_rev[side] = [] + sides_rev[side].append((tile, i)) + +tiles_noconn = {} +for side in sides_rev: + if len(sides_rev[side]) == 1: + tile, orien = sides_rev[side][0] + if tile not in tiles_noconn: + tiles_noconn[tile] = [] + tiles_noconn[tile].append(orien) +tiles_corner = [i for i, noconn in tiles_noconn.items() if len(noconn) == 4] +print(tiles_corner[0] * tiles_corner[1] * tiles_corner[2] * tiles_corner[3]) + +# Figure out the orientation of the top-left corner tile we pick +orien = tiles_noconn[tiles_corner[0]] +if 3 in orien and 0 in orien: + orien = 3 +else: + orien = min(orien) +corner = (tiles_corner[0], orien) + +def get_orien(base, add): + if base & 4: + add = 4 - add + return ((base + add) & 3) | (base & 4) + +# Create a connection graph +conn = {} +for side in sides_rev.values(): + if len(side) != 2: + continue + conn[side[0]] = side[1] + conn[side[1]] = side[0] + +# Put the grid together, starting from the top-left corner, going right then down +grid = [] +for y in range(size): + if y: + tile_top, orien_top = grid[y-1][0] + orien_top = get_orien(orien_top, 2) + tile, orien = conn[(tile_top, orien_top)] + orien ^= 4 + row = [(tile, orien)] + else: + row = [corner] + + for x in range(1, size): + tile_left, orien_left = row[x-1] + orien_left = get_orien(orien_left, 3) + tile, orien = conn[(tile_left, orien_left)] + orien = get_orien(orien, -1) + orien ^= 6 + row.append((tile, orien)) + + grid.append(row) + +def rotate(tile, orien): + # Flip the tile if necessary + if orien >= 4: + tile = [row[::-1] for row in tile] + orien = (4 - orien) % 4 + # Rotate the tile + for x in range(orien): + tile = [[tile[len(iy) - x - 1][y] for x, ix in enumerate(iy)] for y, iy in enumerate(tile)] + return tile + +# Create image +ssize = tsize - 2 +image = [[0] * size * ssize for x in range(size * ssize)] +for y, row in enumerate(grid): + y *= ssize + for x, (tile, orien) in enumerate(row): + x *= ssize + + # Convert tile data into grid, strip the edges + tile = [tiles[tile][x + 1:x + tsize - 1] for x in range(tsize, tsize ** 2 - tsize, tsize)] + tile = rotate(tile, orien) + + # Store into image + for iy, irow in enumerate(tile): + for ix, c in enumerate(irow): + image[y + iy][x + ix] = c + +# Find monsters +monster = """ + # +# ## ## ### + # # # # # # +""" +monster = [(y,x) for y, line in enumerate(monster[1:-1].split("\n")) for x, char in enumerate(line) if char == "#"] +monster_h = 3 +monster_w = 20 + +for orien in range(8): + cur_image = rotate(image, orien) + count = 0 + for y in range(size * ssize - monster_h): + for x in range(size * ssize - monster_w): + for m in monster: + if cur_image[m[0] + y][m[1] + x] != "#": + break + else: + for m in monster: + cur_image[m[0] + y][m[1] + x] = "O" + count += 1 + if count: + break + +# Tally roughness +print(sum(1 for row in cur_image for char in row if char == "#")) + +# for row in cur_image: + # print("".join(row)) diff --git a/d20_input.txt b/d20_input.txt new file mode 100644 index 0000000..ca434fb --- /dev/null +++ b/d20_input.txt @@ -0,0 +1,1728 @@ +Tile 1753: +..##.#.#.# +#...#..... +#......#.. +#..##..#.# +#..##....# +#......... +#.#...##.. +#....#..## +##.......# +#...###### + +Tile 1699: +.###.....# +#.#......# +.....#.... +#.....#..# +.......... +#.#......# +...#...... +#......... +.###...... +.#....#.#. + +Tile 2297: +####....## +....#...#. +###...#... +...##..... +#...#..#.# +.......... +#......#.# +.........# +.......... +#..##.##.. + +Tile 2017: +#....#..## +.#.#..#..# +....##.... +#...#....# +#.#....... +.......... +#.#......# +....##...# +...#....## +..###.##.# + +Tile 1283: +.#....##.. +###...##.. +#......... +#........# +...####..# +.#........ +....#..... +........#. +#....#..#. +..#.####.# + +Tile 1171: +.#..#.#.## +.........# +#...##..## +#...#....# +.......#.. +####.#...# +..#....#.. +#......... +#...#....# +#..#.#.### + +Tile 2251: +.##.##..#. +.###.##..# +#..##.#.#. +#....#..#. +.#........ +......#..# +.....#...# +.###.#.... +##...##..# +.####.#.## + +Tile 2357: +###...##.# +......#.## +#........# +..#....#.# +..#...##.. +#....##..# +........#. +#........# +#.##...#.. +###.##.#.. + +Tile 2503: +...#...### +..#......# +#......##. +#...#..... +.....#..#. +##...#..## +.......#.# +.#...#.#.. +#.......#. +##..#..### + +Tile 1741: +.#....##.# +#.....#... +...#...#.. +##....#... +.##....### +#.###.#..# +#..#....## +#.##.....# +#.#....... +###.##...# + +Tile 3433: +#.......#. +#.#....... +.....#..#. +#........# +###.#..#.. +#....#.... +.....#...# +..#......# +....#.#.## +##.##..... + +Tile 3947: +.##.##.### +#.#...#.## +...#.##..# +#.......## +..#....... +.#...#...# +.....###.# +####..##.# +.##..#.#.. +..###..#.# + +Tile 1627: +##....##.# +#....#.... +....##...# +##..#..... +#..#....#. +.#..#.##.# +.#.......# +#......... +.#...##..# +#.#....#.. + +Tile 1667: +###.#...## +#..#.##..# +##.....#.# +.#........ +..#....#.# +.##....... +......#... +....###.#. +##.#..#.#. +.#..##...# + +Tile 2287: +##..####.# +#......... +#.##...#.. +#..#....#. +#........# +......##.. +#.##..#..# +...#.....# +.........# +#####..### + +Tile 1787: +.##.#.#.#. +#.##.....# +.........# +...#...... +..#..#...# +##....#..# +##.......# +..#....... +...#....#. +.##.####.. + +Tile 1873: +..#.###.## +.......#.# +#.#....... +#...#.##.# +......##.. +.#.....#.# +...##...#. +........#. +.......#.# +..######.# + +Tile 3709: +..##..##.# +##.......# +#......... +....#..... +#..#...#.# +.#....#..# +...##....# +#..#.....# +....##.... +.##.###... + +Tile 3137: +###..#.#.# +.........# +#....#.... +#.#......# +...#.#.#.# +..#...#... +.........# +.........# +#......... +##..###..# + +Tile 1423: +###.##..## +.......... +...#.....# +.......#.# +.......... +##.......# +##........ +#.#....#.. +#.#.....## +.##...#.## + +Tile 1399: +#.#.#....# +.........# +#..#..#..# +..#....... +...#..##.# +#..##...## +#..#.....# +#.##.#.#.# +.....#...# +####.....# + +Tile 2411: +.##.#.#..# +##..##...# +#..#...... +##..#.##.# +.......#.# +##........ +#...#...#. +.....#.#.. +........## +#####.#..# + +Tile 3323: +##.#...### +.........# +.....#.... +#...#.#..# +#........# +....#...## +#........# +#.....###. +...#.#...# +#.#...#... + +Tile 1213: +..##.##... +.....##..# +#.....#..# +#........# +...#...#.# +#.....#... +.#.#.##... +.....#...# +#...#.#... +.###.##### + +Tile 1619: +#..###..## +#.#.#..... +#........# +.........# +###...#.## +.#........ +.......... +.......... +#........# +##.###.#.# + +Tile 1997: +#....#.... +..#......# +#.#...#..# +#..#.....# +#.....#..# +#.#......# +#......... +.........# +.....#...# +#####..##. + +Tile 3533: +#....#.#.# +......##.# +......##.. +#.....#..# +....#..#.# +.....#...# +.#.#...#.# +#...#..### +#...#.#... +.#..###.## + +Tile 3389: +#..###.... +.#..#....# +#.#...#.#. +.........# +#....#...# +#.#....#.# +......#..# +##.......# +##........ +...#####.. + +Tile 3413: +..##.##..# +#........# +#....#.#.. +#....#.... +.....##..# +.........# +....#.#..# +#.#.#.#... +#....#...# +.####..#.# + +Tile 3833: +##.......# +.........# +#.###...#. +.....#.#.. +#......... +#.....#... +##.#...... +####.##..# +....##...# +.#.#...#.. + +Tile 2273: +.##.#.#.## +#........# +#.#....#.. +##..#....# +....#..... +#.......#. +.#........ +.#...#.... +#........# +.###...##. + +Tile 1987: +...#...### +#..#...... +#...#....# +...##..... +#........# +.....##... +#....##..# +.#..##...# +....#..#.# +##.##..##. + +Tile 3877: +.##...#.## +.......... +..#.#..... +.......... +#..##...#. +#.#.....#. +.#.......# +.#..#.#... +...#...#.. +#.##..#..# + +Tile 3109: +##....##.. +##...#.#.. +.......... +...#.....# +.####..### +.#.##..#.# +#.#...#... +.......... +#.......#. +##......#. + +Tile 3907: +#####.##.# +##.....#.# +..##..#... +.##....#.# +..#.....## +#......... +.........# +#......... +........## +.#...#.#.# + +Tile 1823: +##...#.#.# +#......... +.......... +....#..... +...#.##... +##...#...# +#......... +##....#.## +#...##..#. +#####.#.#. + +Tile 1747: +.#...##.#. +...#.#.... +..#.##.... +#...##...# +...#...... +#....##..# +...#.....# +...##..#.# +#.###....# +#......### + +Tile 3671: +.####..### +#.#......# +.......... +#.....#... +.#..#.#... +.......... +#......... +#......... +.......... +#..#..##.# + +Tile 3541: +###..##### +##....#.#. +.......#.. +....#..... +#.#.....## +#.###..### +...#.#.... +.#.......# +.....#.... +..#####..# + +Tile 3457: +#..###.... +#....#..## +.##......# +#....#..#. +.......... +#........# +.......... +...#...#.. +#.....##.# +.##..#.#.. + +Tile 1721: +..##.##.## +.........# +..#....... +##.......# +...#.....# +...#...#.. +#..##..... +........## +#.#......# +..#.#..### + +Tile 1597: +#.#...#..# +..#....... +#.....#..# +..#......# +..#..#...# +#..####... +...#...... +#.#.#.#..# +....#...#. +#.##...#.# + +Tile 2087: +####.#.### +#...#....# +##.......# +##......## +#.#......# +.......... +#....##... +....#..#.# +####....#. +######.##. + +Tile 2309: +...###...# +.##....... +.....#...# +#......#.# +##.......# +####.#.... +#......... +##.#...... +..#..#..#. +####.#.#.# + +Tile 3797: +##..###### +.....#.... +#.###....# +.#.......# +.......... +#......#.# +#..#...... +...#.#.... +#......... +#.###...## + +Tile 2663: +#....#.##. +.......... +.#.......# +##.....#.. +.#....#... +#......#.. +#..#....## +.#..#....# +........## +....###### + +Tile 3779: +.##....#.# +##.#..#..# +#......... +#......... +..#..#.#.# +.......##. +#....#...# +#........# +###....... +#..##.###. + +Tile 1163: +#####.#.## +#......### +.......... +#..#....#. +#..##...## +#...#..... +#..##.#..# +#....#.### +#....#...# +##.#.####. + +Tile 2683: +....#.##.# +#.....#.## +.#....#... +.#.......# +......##.. +.#.#.....# +.........# +.......#.. +.......... +######.#.# + +Tile 1783: +#.###.##.# +.......#.# +#..#....## +.#..#.#.#. +#........# +#.......## +#....###.# +..##.#.#.# +.....#..## +..######.# + +Tile 1097: +#.##..#... +....#...## +#...#..... +.....#.... +.....#..## +...##..#.. +..#...#... +#......... +#..##..#.# +#.####...# + +Tile 2731: +.#.##.#.#. +......#... +.....##..# +...#..#..# +###......# +#...#.#..# +..###....# +.....#...# +#...#....# +.##.#.#... + +Tile 1433: +###.###.## +...#.#.... +.......... +..#......# +..#....... +#..#...... +..##.....# +.......... +#.#..##..# +##..##.#.# + +Tile 3853: +..##..#..# +#.#....... +.....#...# +....#..#.. +.......#.# +##...##... +##......## +.........# +##..#...## +#.#..#.... + +Tile 3169: +.###....#. +##.#....## +#......... +#......... +..#....... +#.......#. +.#.##....# +.#....#... +##..##.#.. +#######..# + +Tile 3299: +##..##...# +..##...... +###.##.... +...#..##.. +#...#.##.. +.........# +##....#... +.........# +.#...#.#.# +##.#.....# + +Tile 2999: +##..#..... +#..#.....# +#......#.# +.........# +#......... +.........# +.#...#.... +........## +#.......#. +.###..#... + +Tile 1499: +.######... +....##..#. +.#.....### +#...#.##.# +......#.#. +..#....#.# +.#.......# +......#.## +.......#.. +###.####.# + +Tile 2237: +#.#.###.#. +..#....... +#.#..#...# +#......##. +#####....# +.#......#. +##.#..###. +..#...#... +##........ +....####.# + +Tile 3049: +......#..# +...#....## +...##..... +.#.#..#... +.#......## +.#.#..#..# +.........# +.#.#....#. +..#....... +#.#..#..#. + +Tile 1583: +#.#####... +#........# +........## +..#....... +.........# +#.#..#..#. +...#..##.# +....##..## +##.#.....# +####...### + +Tile 2791: +.....###.. +#...##.... +....##...# +.........# +#......... +.#...##..# +#......... +#.#.#....# +##..#..#.. +#.#..##..# + +Tile 1879: +.#.###.#.. +#......#.# +....#....# +......#### +#......#.# +#....#.#.. +......#... +#........# +#........# +#..###.### + +Tile 2633: +##.#.....# +#.#......# +........#. +..#......# +#.....#..# +#.......## +#.....#... +...#.....# +#..#....#. +#..#.###.# + +Tile 3701: +..##.##.#. +.........# +.#...##.## +..#....... +##.......# +.....#.... +......##.# +.#.#...#.# +....#...## +#..#..#.## + +Tile 2267: +.....##..# +...#.#.### +.......### +.#......## +.........# +#.....#..# +.........# +#....##..# +#.#....##. +...#####.. + +Tile 2687: +#..##.#### +.....#...# +#....##..# +.......... +.#.....#.. +#........# +#...#.#... +#........# +#..#...##. +#..##..#.# + +Tile 2113: +##.#.##..# +.#........ +.......#.# +#.##.....# +.........# +...#...... +#.#...#... +.##....... +.......... +.#.#.#...# + +Tile 3319: +...##..### +.......... +.......#.. +#....#..#. +..###....# +.#....#..# +#.#.#..#.# +..##...#.. +.#.......# +#..#.####. + +Tile 1303: +#..##....# +#....#.... +#.......#. +#........# +...#...#.. +..##.##.## +........#. +.......... +....#..#.# +##..#.#.## + +Tile 1709: +###.##.#.# +##.......# +#...#..#.# +.......... +.........# +.........# +#.##....## +....#..### +.......#.. +#.#......# + +Tile 3547: +#....####. +#..##...## +##....#..# +#......... +..#.#....# +#....#...# +...#....## +..#.....## +........#. +.###.....# + +Tile 2383: +#...#.#..# +...#..##.. +##......## +#..#...... +##......#. +#........# +........## +.......... +#....#.... +####..###. + +Tile 3989: +..##.#..#. +#.......## +#.#......# +##.#.....# +#..#...... +.........# +#.##...... +...#.....# +.#........ +#.##.#.... + +Tile 3499: +..##..#... +..#.#..#.. +.##....### +##.......# +#..#.#..## +#....#...# +.........# +##.#.#.#.. +.........# +#..###.##. + +Tile 1049: +###....##. +........## +.......... +.......... +.......... +....#...#. +.........# +#......... +.........# +##.####.#. + +Tile 2467: +.....##.## +#.##...... +..###...## +#..#.....# +..#....### +...#.....# +...#....## +.##...#... +...##...## +#.##...#.# + +Tile 3343: +###...#### +.......... +#####..... +.#..#..### +#....#..#. +#........# +.....#...# +.......#.. +#........# +##.#.#.### + +Tile 2129: +##.####..# +#..#..#... +.#.....#.# +##.......# +##.#...#.. +..#.#.#... +#....#...# +#.....##.. +.#.....#.. +..#######. + +Tile 1483: +.##.#.##.# +##.#...... +#.#....#.. +#.#...#..# +#........# +.......#.# +##...#..## +#......#.# +.......... +###.###.## + +Tile 2393: +#.###.##.# +#......#.. +..###..##. +##......## +.......#.. +........#. +.......#.. +#........# +..##.....# +#####..##. + +Tile 2749: +..#.#.#.#. +.#.#...... +#.#......# +....#..... +.##......# +.###...... +##..#..... +.#..##..## +..###.#... +####.##.#. + +Tile 1453: +#.##.#.##. +....#...## +#.#....... +...#...... +....###..# +...#...#.. +#...#..... +.#..#....# +##.......# +#..###.##. + +Tile 2213: +#.#.##.##. +#.......#. +#......#.. +#....#..#. +......#... +#..#.#.... +....#...## +..#...#... +###.#....# +#..#.##.#. + +Tile 2833: +.#.....#.# +..#...#..# +.##.....#. +..##....#. +.....#.### +........## +.#........ +.##......# +......##.. +#....##... + +Tile 2671: +.##.#.#.#. +.#.##.#... +##...#...# +###...#... +.......... +........## +..#......# +.#.......# +.#.#.#.#.# +#...##.#.. + +Tile 1801: +.#..#.#### +#..##....# +.....#.... +.#.......# +#.#.##...# +#......... +.........# +......#..# +.......... +.#.....### + +Tile 3329: +##.#..#... +..#.#.#..# +.........# +.......... +......#... +#......#.. +#.#...#... +.....###.. +.....##... +#..#...#.# + +Tile 2179: +....#.#.## +.......### +..#....### +#........# +...##....# +..###....# +.##.#....# +#..#...... +.#........ +#.#..###.. + +Tile 2003: +##.##.#### +.....#.... +#...#.#... +#..#.....# +.....#.... +.......#.. +#..#...... +..#.....#. +#..#.....# +....#####. + +Tile 2707: +..#..#.##. +.##....... +##.#...... +.#.#..#... +.###..#.#. +#......... +#...#....# +#.##.##..# +##.......# +..#..##### + +Tile 3847: +..##..#..# +.........# +.......... +#.......#. +........#. +.##......# +.#.......# +.....#.... +#..#...... +#..###...# + +Tile 1289: +#...##.#.# +#.....##.. +....#.#... +.........# +....#....# +#..#.#.... +#....#.#.# +.#...#.##. +#.....###. +#.##..#### + +Tile 1867: +####..##.# +#.##.....# +..#..##... +#...#....# +.###..#..# +....##.... +.......... +..#......# +##.......# +###.##.... + +Tile 1021: +####.##.#. +#...#..... +##.......# +#.#.#..#.# +##........ +##....#... +###...#... +##.##..... +.##..#.#.. +...#..##.. + +Tile 1427: +#..####... +.....#.... +#......... +##........ +#.#....... +........#. +.........# +#.#......# +..#......# +.####.#.#. + +Tile 1307: +#.#.#...## +....#..... +#....#.... +##....##.. +.#.#.....# +#....#..## +.....#.#.. +#........# +#........# +#..#####.. + +Tile 2099: +#..###.### +.......... +#.#..#..## +..#....... +.........# +#.......## +.#.#.....# +..#..#..## +.##...##.. +##....#.#. + +Tile 2389: +#.###.#.## +##....#.## +#...#..### +.#.#...#.# +#.....#... +#......#.. +...#...#.. +#..#.##... +.......#.# +..#.#...## + +Tile 2011: +#.##.#.#.# +#........# +#......### +.#..#.#..# +##..###..# +.#..#.##.# +#.#.#...#. +#.....#... +....#...## +.###.#.... + +Tile 2539: +###.#.#.## +......#.## +....##.#.. +#.#...#..# +#..#...... +##...#.#.. +.........# +#.#....#.# +.##......# +.###..#.## + +Tile 3761: +...#.#..#. +#.....#..# +#..#...... +#..#.....# +##........ +#..#.#.... +#......#.. +..#.##.#.. +.#.#..#... +.....#.##. + +Tile 2549: +.##.####.. +#.#....... +#.##....#. +.#........ +......#... +....#.##.. +..#.....#. +...#..#..# +....#..### +##...##... + +Tile 2039: +#.#.####.# +#.#....##. +.......... +#.#....... +##.....#.. +##....#.## +#...#..... +#...#...## +.#.#..##.# +.###...... + +Tile 2063: +.##.##..#. +..#.##.... +#..#.#.... +.#.......# +##........ +#.#..#.#.. +.......... +...###.... +#......#.# +#.##.....# + +Tile 3181: +#####.#### +#.....#..# +#.#......# +.........# +#....#.... +.#.......# +......#..# +#......#.. +#..#....## +#.....#..# + +Tile 2459: +.##..#.#.. +#...#..#.# +#.......## +#........# +.#.#.....# +#...#..##. +.......### +....#..### +........#. +...#.##..# + +Tile 2953: +########.# +..#....... +#...##...# +........#. +#..#....#. +...#.#.... +.......... +#...#....# +........#. +##...##... + +Tile 1487: +#.####.#.. +.....#...# +#....#...# +..#......# +.....#...# +#...##...# +........#. +.#.....#.. +#...#..... +.#.###.#.. + +Tile 1201: +..#...#..# +#......... +#......... +...#.....# +..#......# +.......... +.......... +#.#....... +#....#.... +#.###.##.. + +Tile 1609: +##.##.###. +#........# +.......... +#......... +........#. +.#.##..#.# +#..#....## +#.#....#.. +.#...#.... +##.#..#... + +Tile 2593: +####.#.#.. +#.#......# +.......... +#..##..... +...#...#.. +#..#.....# +..#....... +#........# +..#....... +..#..#..## + +Tile 3889: +######..#. +....#.#.#. +##...#..## +....#....# +#...#....# +..##.##... +#.###....# +.#......## +#....#.... +#....#...# + +Tile 3041: +###....... +##..#...#. +##..#..#.# +......##.# +###....##. +..#...#... +#...#..... +##...#.... +#......#.# +#...#.#.## + +Tile 1367: +###.##.##. +..##.#...# +....#..... +#........# +###....#.. +#.####.... +####....#. +.###.#.##. +...#.....# +..#...#### + +Tile 2609: +.###...#.# +.......... +#........# +...#.#.#.# +......#..# +#.....##.. +#..#..#..# +.####..##. +##......## +#...##..## + +Tile 3167: +########.# +.#..#....# +..#....... +..#..#.#.. +.#.##.#..# +.##......# +##.....#.# +..#.#....# +#........# +.#...#.### + +Tile 2753: +#...#....# +#....#...# +....#....# +#........# +.......... +.......... +#......... +#........# +#......... +.#....#### + +Tile 3527: +.####...## +........## +#......#.# +#...#..#.. +.#......#. +.#.....#.# +#........# +#..#....#. +..#....##. +#.#..##### + +Tile 1279: +.###...#.# +..#......# +#.......## +.......... +#......#.# +.#...#.... +.#........ +#....##..# +#.##...#.. +####..#..# + +Tile 1291: +#......### +##.#.....# +.......... +#.#..##... +......##.# +.#.....#.. +.......... +#.#......# +#......... +#..#...### + +Tile 1319: +##..##.### +#.......#. +.......... +###......# +.......... +...##..#.. +#.#..#.... +#...#..... +.#...#...# +#..#.#..## + +Tile 1009: +....##...# +#.....##.# +#....##... +.#.....#.. +#...#..... +#......... +##........ +#....#..## +...#...#.# +#######... + +Tile 2659: +....####.# +#.##...... +..#.....## +.#.......# +.#........ +..##.....# +...#...... +......#..# +#.#..#...# +#..#.##..# + +Tile 1543: +#######.#. +#..#.#...# +.........# +##.#.....# +#.#......# +#.......## +..##...... +..#.###..# +...#.....# +##.###..#. + +Tile 1019: +........#. +#....#.#.# +...#...... +##.#.#..## +....#.#.#. +#.###...## +####.#..#. +#....#.... +#........# +.#...##.#. + +Tile 2239: +##..###... +......#..# +##...#.... +.......... +....#...## +...#...#.# +..#....... +.........# +#..###...# +##...#...# + +Tile 2797: +#.#..#.... +#.......#. +#.#..#.... +#......#.. +#....##..# +#...#...## +#.#....... +.#.....#.# +##.......# +#...#.#.## + +Tile 1663: +..##.#...# +#....##..# +....#....# +..#......# +#........# +.......... +#..#.....# +#...#....# +#..#....#. +.#..#.#..# + +Tile 1069: +#########. +.#........ +###....... +...#....## +#....#.... +#........# +#...#....# +.....#.... +#.#......# +.#....##.# + +Tile 1559: +##.###.#.. +##...#.... +..#......# +...#.#..#. +...##.#... +.#..#.#.## +#..#....#. +....#.#..# +..#....... +####.#.... + +Tile 3203: +##.##.#... +##........ +..#..#...# +....#....# +..##.....# +#.....##.. +.......... +.......... +#......#.. +...#.#.##. + +Tile 2819: +.####...## +...#.##... +..#....##. +........#. +...#...### +..#....#.. +#.#.....## +#.#..#.#.. +#...#..... +###....... + +Tile 2027: +..#..##.## +#....#.#.. +......#... +#.#....#.. +.........# +........## +#.#....... +......#... +.......#.# +.#.#.##.#. + +Tile 1091: +..#..###.# +...#.....# +.........# +#........# +..#.#..#.. +#....#...# +....#.#..# +.......### +#......... +#..##.##.# + +Tile 2381: +...###...# +#.#.#...#. +....#....# +#.....##.. +#........# +..##....## +#.#......# +##.......# +.....#.### +.#.####### + +Tile 1381: +######.##. +#.#....#.. +#....###.# +#.#.....#. +#.#.#....# +#....#...# +#.#.#.#... +.#.#.#.... +....#...#. +####.##### + +Tile 3719: +...#.#...# +...#.....# +...#..#.## +#..#.....# +#.......## +##..#..#.# +.......#.. +.##....... +.......##. +.#.#.###.# + +Tile 3593: +##...##.#. +#......... +......#.#. +.......... +..#......# +#........# +.....##..# +.#....#.## +.#.....### +#.#..#...# + +Tile 2971: +..##.....# +#.....#.## +#.#......# +#....#.... +.........# +#......... +#......#.. +.......#.# +##....#..# +#.##.#..## + +Tile 1637: +#.###.#..# +.#..#.#..# +.........# +......#.## +#..###...# +....#.#... +#.#.....## +#........# +......#..# +##..#..... + +Tile 2711: +..##.##... +###..#...# +......#... +#.......#. +#.#....... +#.....##.. +...#.##..# +.......... +.....#...# +##.....### + +Tile 3881: +..#####.## +.#....#..# +.........# +.##..#.... +..###.#..# +...#...... +...#...#.# +..#....... +#.....#... +.#.##.#... + +Tile 1907: +..####..## +.......#.. +.......#.. +.........# +....#.##.# +..#..##... +....#....# +#...#....# +#........# +.#.##..#.# + diff --git a/d20_output.txt b/d20_output.txt new file mode 100644 index 0000000..53a0099 --- /dev/null +++ b/d20_output.txt @@ -0,0 +1,2 @@ +66020135789767 +1537