You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.3 KiB
77 lines
2.3 KiB
from io import DEFAULT_BUFFER_SIZE |
|
import sys |
|
|
|
poly = None |
|
inserters = {} |
|
|
|
class polyme: |
|
def __init__(self, initial): |
|
self.Polymere = [] |
|
self.letters = {} |
|
self.dubles = {} |
|
for f in initial: |
|
self.Polymere.append(f) |
|
for i in range(len(self.Polymere)): |
|
if i != len(self.Polymere) - 1: |
|
temp = self.Polymere[i] + self.Polymere[i + 1] |
|
g = self.dubles.setdefault(temp, 0) |
|
g += 1 |
|
self.dubles.update({temp : g}) |
|
temp2 = self.letters.setdefault(self.Polymere[i], 0) |
|
temp2 += 1 |
|
self.letters.update({self.Polymere[i] : temp2}) |
|
print(self.letters, self.dubles, self.Polymere) |
|
|
|
def steppy(self): |
|
tempdict = {} |
|
tempdict.clear() |
|
print(tempdict) |
|
for key, insert in inserters.items(): |
|
if key in self.dubles: |
|
count = self.dubles[key] |
|
if insert in self.letters: |
|
adletters = self.letters[insert] |
|
else: |
|
adletters = 0 |
|
adletters += count |
|
self.letters.update({insert : adletters}) |
|
dub1 = key[0] + insert |
|
dub2 = insert + key[1] |
|
g = tempdict.setdefault(dub1, 0) |
|
g += count |
|
tempdict.update({dub1 : g}) |
|
g = tempdict.setdefault(dub2, 0) |
|
g += count |
|
tempdict.update({dub2 : g}) |
|
g = tempdict.setdefault(key, 0) |
|
g -= count |
|
tempdict.update({key : g}) |
|
for dub, amount in tempdict.items(): |
|
g = self.dubles.setdefault(dub, 0) |
|
g += amount |
|
self.dubles.update({dub : g}) |
|
print(self.letters, self.dubles, self.Polymere) |
|
|
|
|
|
def findsolu(self): |
|
temp = self.letters.values() |
|
print(temp) |
|
temp2 = max(temp) - min(temp) |
|
return temp2 |
|
|
|
with open(sys.argv[1], 'r') as f: |
|
for g in f.readlines(): |
|
g = g.strip() |
|
if poly is None: |
|
poly = polyme(g) |
|
continue |
|
if g == '': |
|
continue |
|
else: |
|
temp1, temp2 = g.split(' -> ') |
|
inserters.update({temp1:temp2}) |
|
|
|
for i in range(40): |
|
poly.steppy() |
|
|
|
print(poly.findsolu())
|
|
|