Browse Source

Inefficient but correct solution for day 22/2

master
Maya Herrscher 5 months ago
parent
commit
5757e5fb19
  1. 18
      2024/day22/code.py

18
2024/day22/code.py

@ -19,26 +19,30 @@ if __name__ == '__main__':
# challenge 1
res1 = 0
changes, values = {}, {}
change_set = set([])
for n in nums:
secret = n
changes[n] = [0] * 2000
changes[n] = [[] for i in range(2000)]
values[n] = [0] * 2000
ob = int(str(secret)[-1])
for i in range(2000):
secret = prg(secret)
bananas = int(str(secret)[-1])
changes[n][i] = bananas - ob
for j in range(i,min(2000,i+4)):
changes[n][j].append(bananas - ob)
values[n][i] = bananas
ob = bananas
res1 += secret
print(f"challenge 1:\n{res1}\n")
# for i, c in enumerate(changes[123][3:10]):
# if c > 0: print(changes[123][i:i+4])
print(changes[123][:10])
# challenge 2
# challenge 2 (could be more efficient i guess)
res2 = 0
for n in nums:
change_set = change_set.union(set([tuple(c) if c[-1] > 1 else () for c in changes[n]]))
for c in list(change_set):
if c != () and c[-1] > 1 and sum([list(c) in changes[num] for num in nums]) > 100:
res2 = max(sum([values[num][changes[num].index(list(c))] if list(c) in changes[num] else 0 for num in nums]), res2)
res2 = ""
print(f"challenge 2:\n{res2}")

Loading…
Cancel
Save