Пример #1
0
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)
Пример #2
0
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
Пример #3
0
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))
Пример #4
0
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
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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'
Пример #9
0
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
Пример #10
0
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
Пример #11
0
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
Пример #12
0
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
Пример #13
0
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
Пример #14
0
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
Пример #15
0
        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 = []