You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.3 KiB
75 lines
1.3 KiB
#!/usr/bin/env python
|
|
|
|
from aoc import get_input # AoC
|
|
import re # regex
|
|
|
|
data = get_input(13).splitlines()
|
|
|
|
time = int(data[0])
|
|
|
|
busses = []
|
|
for busid in data[1].split(","):
|
|
if(busid != "x"):
|
|
busses.append(int(busid))
|
|
# else:
|
|
# busses.append(busid)
|
|
|
|
##busses.sort()
|
|
|
|
|
|
def getTimestamp(busid, i):
|
|
return busid * i
|
|
|
|
|
|
# bustimes = dict()
|
|
|
|
# for busid in busses:
|
|
# print("checking ", busid)
|
|
# i = 0
|
|
# bustimes[busid] = []
|
|
# while True:
|
|
# timestamp = getTimestamp(busid, i)
|
|
# bustimes[busid].append(timestamp)
|
|
|
|
# if(timestamp > time):
|
|
# break
|
|
# else:
|
|
# i += 1
|
|
# continue
|
|
|
|
# waittimes = dict()
|
|
# for busid, t in bustimes.items():
|
|
# high = max(t)
|
|
# waittimes[busid] = high - time
|
|
|
|
# bestbusid = min(waittimes, key=waittimes.get)
|
|
|
|
# thing = bestbusid * waittimes[bestbusid]
|
|
|
|
# print(bestbusid, thing)
|
|
|
|
|
|
bus = dict()
|
|
i = 0
|
|
for busid in data[1].split(","):
|
|
if(busid != "x"):
|
|
bus[i] = int(busid)
|
|
|
|
i += 1
|
|
|
|
|
|
minindex, maxindex = 0, len(bus) - 1
|
|
from sympy.ntheory.modular import crt
|
|
|
|
thing = []
|
|
buss = []
|
|
for i, busid in bus.items():
|
|
thing.append(i)
|
|
buss.append(busid)
|
|
|
|
print(bus, buss, thing)
|
|
hello = crt(buss, thing)
|
|
print(hello)
|
|
|
|
thething = hello[1] - hello[0]
|
|
print(thething)
|
|
|