| 12345678910111213141516171819202122232425 |
- #!/usr/bin/env python3
- import sys
- initial = sys.stdin.readline().split()[-1].replace('.', ' ')
- sys.stdin.readline()
- trans = dict(tuple(line.rstrip().replace('.', ' ').split(' => '))
- for line in sys.stdin)
- def spread(iters):
- offset = 0
- pattern = initial
- for i in range(iters):
- pattern = ' ' + pattern + ' '
- leftpad = ''.join(trans.get(pattern[i - 2: i + 3], ' ')
- for i in range(2, len(pattern) - 2)).rstrip()
- stripped = leftpad.lstrip()
- offset += len(leftpad) - len(stripped) - 2
- pattern = stripped
- return sum(i + offset for i, c in enumerate(pattern) if c == '#')
- print(spread(20))
- n = 500
- a = spread(n)
- b = spread(n + 1)
- print(a + (b - a) * (50000000000 - n))
|