Roderic Day 3 лет назад
Родитель
Сommit
85af66e469
1 измененных файлов: 26 добавлений и 0 удалений
  1. +26
    -0
      y2021/p20.py

+ 26
- 0
y2021/p20.py Просмотреть файл

@@ -0,0 +1,26 @@
def enhance(pos, cache={}):
seq = tuple(image.get(pos + d, infinity) for d in D9)
key = infinity, seq
if key not in cache:
cache[key] = alg[int(''.join({'.':'0', '#':'1'}[x] for x in seq), 2)]
return cache[key]


text = open(0).read()
alg, text = text.split('\n\n')
D9 = [dx + dy for dy in [-1j, 0, 1j] for dx in [-1, 0, 1]]

image = {}
for y, line in enumerate(text.splitlines()):
for x, char in enumerate(line):
image[complex(x, y)] = char

X, Y = x, y
for i in range(1, 50 + 1):
infinity = '#.'[i % 2]
image = {(x + y * 1j): enhance(x + y * 1j)
for x in range(0 - 2 * i, X + 2 * i)
for y in range(0 - 2 * i, Y + 2 * i)
}
if i in {2, 50}:
print(sum(v == '#' for v in image.values()))

Загрузка…
Отмена
Сохранить