Рубрики
Без рубрики

Адвое Код 2020: Python Solution День 13

Это день 13 и снова я забыл о вызове, но, наконец, я сделал это. Первая часть была легкой бу … Помечено с AdhentOfCode, Challenge, Python, алгоритмыми.

Это день 13 и снова я забыл о вызове, но, наконец, я сделал это. Первая часть была легкой, но для второй части я взял помощь от Reddit комментарий здесь. Я загрузил все мои 2020 решения на Этот репозиторий Отказ

Пожалуйста, поделитесь своим решением тоже.

Часть 1.

with open("day13.txt", "r") as fp:
    lines = fp.readlines()
timestamp = int(lines[0][:-1])
bus_ids = [int(x) for x in lines[1].split(",") if x.isdigit()]

import numpy as np
timestamps = range(timestamp-50, timestamp+50)
valid = np.inf
diff = np.inf
bus_id = np.inf

for time in timestamps:
    for bus in bus_ids:
        if time%bus==0:
            d = abs(time-timestamp)
            if time>timestamp and d < diff:
                valid = time
                diff = d
                bus_id = bus

bus_id*(valid-timestamp)

Вторая часть

LINES=lines
start = int(LINES[0])
busses = ["x" if x == "x" else int(x) for x in LINES[1].split(",")]

def part2():
    mods = {bus: -i % bus for i, bus in enumerate(busses) if bus != "x"}
    print(mods)
    vals = list(reversed(sorted(mods)))
    val = mods[vals[0]]
    r = vals[0]
    for b in vals[1:]:
        while val % b != mods[b]:
            val += r
        r *= b
    return val
part2()

Оригинал: “https://dev.to/qviper/advent-of-code-2020-python-solution-day-13-24k4”