mirror of
https://github.com/peter-tanner/advent-of-code-2020.git
synced 2024-11-30 10:50:17 +08:00
day 13 - no part 2 because wtf is the CRT?
This commit is contained in:
parent
5047bd64b9
commit
4b22a656b8
35
13/a.py
Normal file
35
13/a.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
import math
|
||||
|
||||
d = [ x.split(',') for x in open('input').read().splitlines() ]
|
||||
|
||||
def a(d): #To be honest, I could've done this way quicker manually and got on the leaderboard. Formula is x - ID mod x for the waiting time
|
||||
x = int(d[0][0])
|
||||
ids = [ int(x) for x in d[1] if x != 'x' ]
|
||||
delta = { id:(id - (x % id)) for id in ids if ( x := int(d[0][0]) )}
|
||||
minId = min(delta, key=delta.get)
|
||||
return (delta[minId]*minId)
|
||||
|
||||
print(a(d))
|
||||
|
||||
def b(d):
|
||||
d = [ [-y,int(d[y])] for y in {i:d[i] for i in range(len(d))} if d[y] != 'x']
|
||||
[ print(x) for x in d ] # generate numbers
|
||||
|
||||
|
||||
# I'm a math noob, so I just saw what everyone else is talking about and found this chinese remainder theorem.
|
||||
# Why does this work? I DONT KNOW.
|
||||
# I'll probably learn this when I get some formal CS education.
|
||||
# Used a solver for that.
|
||||
|
||||
# x = 760171380521445
|
||||
# x ≡ 0 mod 17 => x = n*17+0
|
||||
# x ≡ −7 mod 41 => x = n*41-7 ??? # -7 because of
|
||||
# x ≡ −17 mod 643
|
||||
# x ≡ −25 mod 23
|
||||
# x ≡ −30 mod 13
|
||||
# x ≡ −46 mod 29
|
||||
# x ≡ −48 mod 433
|
||||
# x ≡ −54 mod 37
|
||||
# x ≡ −67 mod 19
|
||||
|
||||
b(d[1])
|
Loading…
Reference in New Issue
Block a user