advent-of-code/2020/Python/day13.py
2020-12-13 16:27:44 +01:00

40 lines
1 KiB
Python

def get_data() -> (int, list[int]):
with open("input.txt") as file:
time = int(file.readline().rstrip())
buses = file.readline().rstrip().split(',')
return time, buses
def solve_p1(time: int, buses: list[str]) -> int:
def find_earliest_departure(_bus_id: int, _time: int) -> int:
_departure = 0
while _departure < _time:
_departure += _bus_id
return _departure
times = []
for bus in buses:
if bus == 'x':
continue
times.append((int(bus), find_earliest_departure(_bus_id=int(bus), _time=time)))
sort = sorted(times, key=lambda x: x[1])
return sort[0][0] * (sort[0][1] - time)
def solve_p2(buses):
curr_step = 1
result = 1
for i in range(len(buses)):
if buses[i] == 'x':
continue
while (result + i) % int(buses[i]) != 0:
result += curr_step
curr_step *= int(buses[i])
return result
TIME, BUSES = get_data()
print(solve_p1(TIME, BUSES))
print(solve_p2(BUSES))