|
|
@@ -0,0 +1,25 @@
|
|
|
+#!/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))
|