Luna Lailatova 2 years ago
parent
commit
afda5d28da
  1. 77
      day14-2.py
  2. 47
      day14.py
  3. 102
      input14.txt
  4. 18
      testdata14.txt

77
day14-2.py

@ -0,0 +1,77 @@ @@ -0,0 +1,77 @@
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())

47
day14.py

@ -0,0 +1,47 @@ @@ -0,0 +1,47 @@
import sys
poly = None
inserters = {}
class polyme:
def __init__(self, initial):
self.Polymere = []
for f in initial:
self.Polymere.append(f)
def steppy(self):
counter = 0
temp = len(self.Polymere) - 1
for i in range(temp):
active = self.Polymere[i + counter] + self.Polymere[i+1 + counter]
for key, insert in inserters.items():
if active == key:
#print(key ,insert)
self.Polymere.insert(i + counter + 1, insert)
counter += 1
def findsolu(self):
self.solution = {}
for f in self.Polymere:
g = self.solution.setdefault(f, 0)
g += 1
self.solution.update({f : g})
temp = self.solution.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(10):
poly.steppy()
print(poly.findsolu())

102
input14.txt

@ -0,0 +1,102 @@ @@ -0,0 +1,102 @@
VFHKKOKKCPBONFHNPHPN
VS -> B
HK -> B
FO -> P
NC -> F
VN -> C
BS -> O
HS -> K
NS -> C
CV -> P
NV -> C
PH -> H
PB -> B
PK -> K
HF -> P
FV -> C
NN -> H
VO -> K
VP -> P
BC -> B
KK -> S
OK -> C
PN -> H
SB -> V
KO -> P
KH -> C
KS -> S
FP -> B
PV -> B
BO -> C
OS -> H
NB -> S
SP -> C
HN -> N
FN -> B
PO -> O
FS -> O
NH -> B
SO -> P
OB -> S
KC -> C
OO -> H
BB -> V
SC -> F
NP -> P
SH -> C
BH -> O
BP -> F
CC -> S
BN -> H
SS -> P
BF -> B
VK -> P
OV -> H
FC -> S
VB -> S
PF -> N
HH -> O
HC -> V
CH -> B
HP -> H
FF -> H
VF -> V
CS -> F
KP -> F
OP -> H
KF -> F
PP -> V
OC -> C
PS -> F
ON -> H
BK -> B
HV -> S
CO -> K
FH -> C
FB -> F
OF -> V
SN -> S
PC -> K
NF -> F
NK -> P
NO -> P
CP -> P
CK -> S
HB -> H
BV -> C
SF -> K
HO -> H
OH -> B
KV -> S
KN -> F
SK -> K
VH -> S
CN -> S
VC -> P
CB -> H
SV -> S
VV -> P
CF -> F
FK -> F
KB -> V

18
testdata14.txt

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
NNCB
CH -> B
HH -> N
CB -> H
NH -> C
HB -> C
HC -> B
HN -> C
NN -> C
BH -> H
NC -> B
NB -> B
BN -> B
BB -> N
BC -> B
CC -> N
CN -> C
Loading…
Cancel
Save