diff --git a/day14-2.py b/day14-2.py new file mode 100644 index 0000000..d6a92a1 --- /dev/null +++ b/day14-2.py @@ -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()) diff --git a/day14.py b/day14.py new file mode 100644 index 0000000..f55105a --- /dev/null +++ b/day14.py @@ -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()) diff --git a/input14.txt b/input14.txt new file mode 100644 index 0000000..8da6ecf --- /dev/null +++ b/input14.txt @@ -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 diff --git a/testdata14.txt b/testdata14.txt new file mode 100644 index 0000000..b5594dd --- /dev/null +++ b/testdata14.txt @@ -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