Browse Source

2020/13

master
Roderic Day 4 years ago
parent
commit
cdb56f033c
2 changed files with 31 additions and 0 deletions
  1. +5
    -0
      toolkit.py
  2. +26
    -0
      y2020/p13.py

+ 5
- 0
toolkit.py View File

import collections import collections
import hashlib import hashlib
import itertools import itertools
import math
import os import os
import re import re
import sys import sys
import requests import requests




def lcm(a, b):
return abs(a * b) // math.gcd(a, b)


def render(grid, brush=None): def render(grid, brush=None):
if brush is None: if brush is None:
brush = {v: v for v in grid.values()} brush = {v: v for v in grid.values()}

+ 26
- 0
y2020/p13.py View File

import sys
from itertools import count

import toolkit


text = sys.stdin.read()


tid, string = text.split()
tid = int(tid)
found = [
next((tid + i, val) for i in count() if (tid + i) % val == 0)
for val in [int(v) for v in string.split(',') if v != 'x']
]
a, b = min(found)
print((a - tid) * b)


args = [(i, int(val)) for i, val in enumerate(string.split(',')) if val != 'x']
(last, step), *tail = args
for offset, value in tail:
i = next(i for i in count() if (last + i * step + offset) % value == 0)
last += i * step
step = toolkit.lcm(step, value)
print(last)

Loading…
Cancel
Save