day 5
This commit is contained in:
50
2024/05/05.py
Normal file
50
2024/05/05.py
Normal file
@@ -0,0 +1,50 @@
|
||||
import copy
|
||||
|
||||
|
||||
def checkPage(upd,rules):
|
||||
out = True
|
||||
for rule in rules:
|
||||
if rule[1] in upd:
|
||||
ind = upd.index(rule[1])
|
||||
for i in range(ind,len(upd)):
|
||||
out = False if upd[i] == rule[0] else out
|
||||
return out
|
||||
|
||||
def findMid(arr):
|
||||
return int(arr[int((len(arr)-1)/2)])
|
||||
|
||||
def orderUpd(upd,rules):
|
||||
out = copy.deepcopy(upd)
|
||||
temp = ""
|
||||
for rule in rules:
|
||||
if rule[0] in out and rule[1] in out:
|
||||
temp = out[out.index(rule[0])]
|
||||
out[out.index(rule[0])] = out[out.index(rule[1])]
|
||||
out[out.index(rule[1])] = temp
|
||||
if not checkPage(out,rules):
|
||||
out = orderUpd(out,rules)
|
||||
return out
|
||||
|
||||
flag = False
|
||||
updates = []
|
||||
rules = []
|
||||
|
||||
with open("input05.txt") as file:
|
||||
for line in file:
|
||||
if line == "\n":
|
||||
flag = True
|
||||
elif not flag:
|
||||
rules.append([line.split("|")[0],line.split("|")[1][:-1]])
|
||||
else:
|
||||
updates.append(line.split(","))
|
||||
updates[-1][-1] = updates[-1][-1][:-1]
|
||||
out = 0
|
||||
out2 = 0
|
||||
for upd in updates:
|
||||
if checkPage(upd,rules):
|
||||
out += findMid(upd)
|
||||
else:
|
||||
upd=orderUpd(upd,rules)
|
||||
out2 += findMid(upd)
|
||||
print("sum of middles of correct updates: " + str(out))
|
||||
print("sum of middles of newly ordered updates: " + str(out2))
|
||||
1367
2024/05/input05.txt
Normal file
1367
2024/05/input05.txt
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user