def solve(): data = api.fetch(2017, 6) banks = list(map(int, data.split("\t"))) print(banks) existing = [''.join(map(str, banks))] len_ = len(banks) turns = 0 while True: turns += 1 index = 0 max_ = banks[index] for i in range(0, len_): if banks[i] > max_: max_ = banks[i] index = i blocks = banks[index] banks[index] = 0 for _ in range(0, blocks): index += 1 banks[index % len_] += 1 e = ''.join(map(str, banks)) if e in existing: print("It took {} turns (part one)".format(turns)) assert turns == 3156 prev = existing.index(e) part2 = turns - prev assert part2 == 1610 print("The infinite loop contains {} cycles (part two)".format( part2)) break existing.append(e)
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == 6198540
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) p2, p2_time = api.time_it(part2, data) print("Part two {}, it took {} ms".format(p2, p2_time))
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip() p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == 758 p2, p2_time = api.time_it(part2, data) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 814
def solve(): input_ = api.fetch(YEAR, DAY) data = parse(input_) test() p1, p2 = count_passwords(data) print("Part one {}".format(p1)) print("Part two {}".format(p2)) assert p1 == 200 assert p2 == 116
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip() p1, p1_time = api.time_it(part2, data) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == '62934785' p2, p2_time = api.time_it(part2, data, True) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 693659135400
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == 30869 p2, p2_time = api.time_it(part2, data) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 4381476149273
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1[0], p1_time)) assert p1[0] == 2287 p2, p2_time = api.time_it(part2, data, p1[1]) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 'fntg,gtqfrp,xlvrggj,rlsr,xpbxbv,jtjtrd,fvjkp,zhszc'
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == 15919415426101 p2, p2_time = api.time_it(part2, data) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 3443997590975
def solve(): test_rotate() input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == 521 p2, p2_time = api.time_it(part2, data) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 22848
def solve(): test() input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == 30753705453324 p2, p2_time = api.time_it(part2, data) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 244817530095503
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") data = list(map(int, data)) p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) p2, p2_time = api.time_it(part2, data, p1) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p1 == 1212510616 assert p2 == 171265123
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip() tiles = parse_input(data) find_matches(tiles) p1, p1_time = api.time_it(part1, tiles) print("Part one {}, it took {} ms".format(p1, p1_time)) assert p1 == 79412832860579 p2, p2_time = api.time_it(part2, tiles) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p2 == 2155
def solve(): input_ = api.fetch(YEAR, DAY) data = input_.strip().split("\n") data = list(map(int, data)) p1, p1_time = api.time_it(part1, data) print("Part one {}, it took {} ms".format(p1, p1_time)) data = input_.strip().split("\n") data = list(map(int, data)) p2, p2_time = api.time_it(part2, data) print("Part two {}, it took {} ms".format(p2, p2_time)) assert p1 == 2201 assert p2 == 169255295254528
self.x = x self.y = y def rotate_left(dir): if dir.x == 1 and dir.y == 0: return Coord(0, 1) if dir.x == 0 and dir.y == 1: return Coord(-1, 0) if dir.x == -1 and dir.y == 0: return Coord(0, -1) if dir.x == 0 and dir.y == -1: return Coord(1, 0) data = api.fetch(2017, 3) steps = 0 max_steps = 1 direction = Coord(1, 0) current = Coord(0, 0) rotations = 0 part1_answer = None part2 = {"0,0": 1} part2_answer = None def get_nearby(coord): n = []