def test_given_2(data, phase, result):
    amp_a = Day(7, 2)
    amp_b = Day(7, 2)
    amp_c = Day(7, 2)
    amp_d = Day(7, 2)
    amp_e = Day(7, 2)

    amps = [amp_a, amp_b, amp_c, amp_d, amp_e]

    for amp in amps:
        amp.debug = False
        amp.concurrent = True

    load_all(amps, data.split(","))
    feedback(amps, phase)
    assert amp_e.result == result

    # Having these together guarantees good reset

    for amp in amps:
        amp.reset(1)  # Reset all amps to state after loading and int conversion

    load_all(amps, data.split(","))
    feedback(amps, phase)
    assert amp_e.result == result
def example():
    day = Day(24)
    data = """sesenwnenenewseeswwswswwnenewsewsw
neeenesenwnwwswnenewnwwsewnenwseswesw
seswneswswsenwwnwse
nwnwneseeswswnenewneswwnewseswneseene
swweswneswnenwsewnwneneseenw
eesenwseswswnenwswnwnwsewwnwsene
sewnenenenesenwsewnenwwwse
wenwwweseeeweswwwnwwe
wsweesenenewnwwnwsenewsenwwsesesenwne
neeswseenwwswnwswswnw
nenwswwsewswnenenewsenwsenwnesesenew
enewnwewneswsewnwswenweswnenwsenwsw
sweneswneswneneenwnewenewwneswswnese
swwesenesewenwneswnwwneseswwne
enesenwswwswneneswsenwnewswseenwsese
wnwnesenesenenwwnenwsewesewsesesew
nenewswnwewswnenesenwnesewesw
eneswnwswnwsenenwnwnwwseeswneewsenese
neswnwewnwnwseenwseesewsenwsweewe
wseweeenwnesenwwwswnew"""

    day.load(data, typing=str)
    return day
def test_given_3():
    part1 = Day(9, 1)
    middle = [104, 1125899906842624, 99]
    part1.load(middle.copy())
    out = part1.execute_opcode()

    assert middle[1] == part1.result
Example #4
0
def test_part1():
    part1 = Day(8, 1)
    part1.load(typing=str)
    layers = get_layers(part1, 25, 6)
    zero_layer = fewest_zero_layer(layers)
    assert number_of_x_digits(layers, zero_layer, '1') * number_of_x_digits(
        layers, zero_layer, '2') == 1088
Example #5
0
def test_iter():
    diy = Day(1, 1)

    diy.load([0, 1, 2])

    assert diy[1:] == [1, 2]

    assert len(diy) == 3
def example():
    data = """.#.
..#
###"""

    day = Day(17)
    day.load(data, typing=str)
    return day
def example():
    day = Day(21)
    data = """mxmxvkd kfcds sqjhc nhms (contains dairy, fish)
trh fvjkl sbzzf mxmxvkd (contains dairy)
sqjhc fvjkl (contains soy)
sqjhc mxmxvkd sbzzf (contains fish)"""

    day.load(data, typing=str)
    return day
Example #8
0
def test_summary():
    day = Day(1, 1)
    day.load([1, 2, 3])

    day.summary()

    day.answer(7)

    day.summary()
Example #9
0
def test_part1():
    part1 = Day(6, 1)
    part1.load()

    orbit = make_orbit_dict(part1.data)

    nr_of_each_orbits = keyfinder(orbit, 'COM', {}, 0)

    assert count_orbits(nr_of_each_orbits) == 139597
Example #10
0
def test_original():
    day03 = Day(3, 1)
    day03.load()

    val, direction = splitter(day03)
    kablemap, cx, cy = init_map(val, direction)
    kablemap = draw(kablemap, val, direction, cy, cx)

    assert distance(kablemap, cy, cx) == 1285
    assert minway(kablemap, val, direction, cy, cx) == 14228
Example #11
0
def test_part1(monkeypatch):

    # monkeypatch the "input" function, so that it returns "Mark".
    # This simulates the user entering "Mark" in the terminal:
    monkeypatch.setattr("builtins.input", lambda x: "1")

    part1 = Day(5, 1)
    part1.load(typing=int, sep=",").execute_opcode()

    assert part1.diagnostic == 7692125
Example #12
0
def test_given_0():
    day03 = Day(3, 1)
    day03.load(data="""R8,U5,L5,D3\nU7,R6,D4,L4""".split())

    val, direction = splitter(day03)
    kablemap, cx, cy = init_map(val, direction)
    kablemap = draw(kablemap, val, direction, cy, cx)

    assert distance(kablemap, cy, cx) == 6
    assert minway(kablemap, val, direction, cy, cx) == 30
Example #13
0
def test_part1():
    amp_a = Day(7, 1)
    amp_b = Day(7, 1)
    amp_c = Day(7, 1)
    amp_d = Day(7, 1)
    amp_e = Day(7, 1)
    obj = [amp_a, amp_b, amp_c, amp_d, amp_e]
    load_all(obj)
    maximum, _ = find_max_sequence(amp_a, amp_b, amp_c, amp_d, amp_e)
    assert maximum == 14902
Example #14
0
def test_given(data, phase, result):
    amp_a = Day(7, 1)
    amp_b = Day(7, 1)
    amp_c = Day(7, 1)
    amp_d = Day(7, 1)
    amp_e = Day(7, 1)

    amps = [amp_a, amp_b, amp_c, amp_d, amp_e]

    load_all(amps, data.split(","))
    assert amp_chain(amps, phase)[0] == result
Example #15
0
def test_part1_given0():
    amp_a = Day(7, 1)
    amp_b = Day(7, 1)
    amp_c = Day(7, 1)
    amp_d = Day(7, 1)
    amp_e = Day(7, 1)
    obj = [amp_a, amp_b, amp_c, amp_d, amp_e]
    load_all(obj,
             data="3,15,3,16,1002,16,10,16,1,16,15,15,4,15,99,0,0".split(','))
    maximum, _ = find_max_sequence(amp_a, amp_b, amp_c, amp_d, amp_e)
    assert maximum == 43210
Example #16
0
def test_part1_given0():
    part1 = Day(6, 1)
    part1.load(data=[
        'COM)B', 'B)C', 'C)D', 'D)E', 'E)F', 'B)G', 'G)H', 'D)I', 'E)J', 'J)K',
        'K)L'
    ])

    orbit = make_orbit_dict(part1.data)

    nr_of_each_orbits = keyfinder(orbit, 'COM', {}, 0)

    assert count_orbits(nr_of_each_orbits) == 42
Example #17
0
def test_part2():
    part2 = Day(6, 2)
    part2.load()

    orbit = make_orbit_dict(part2.data)

    you = way_to_center(orbit, 'YOU', [])
    san = way_to_center(orbit, 'SAN', [])
    new_center = find_new_center(you, san)

    assert distance_to_center(orbit, new_center, 'YOU') + distance_to_center(
        orbit, new_center, 'SAN') - 2 == 286
Example #18
0
def test_given_1(monkeypatch, data, part1_in, part2_in):
    part1 = Day(5, 2)
    part1.load(data, sep=",")

    monkeypatch.setattr("builtins.input", lambda x: part1_in)
    part1.execute_opcode()
    assert part1.diagnostic == 0

    part1.reset()
    monkeypatch.setattr("builtins.input", lambda x: part2_in)
    part1.execute_opcode()
    assert part1.diagnostic == 1
Example #19
0
def test_given_1():
    day03 = Day(3, 1)
    day03.load(
        data=
        """R75,D30,R83,U83,L12,D49,R71,U7,L72\nU62,R66,U55,R34,D71,R55,D58,R83"""
        .split())

    val, direction = splitter(day03)
    kablemap, cx, cy = init_map(val, direction)
    kablemap = draw(kablemap, val, direction, cy, cx)

    assert distance(kablemap, cy, cx) == 159
    assert minway(kablemap, val, direction, cy, cx) == 610
Example #20
0
def test_given_2():
    day03 = Day(3, 1)
    day03.load(
        data=
        """R98,U47,R26,D63,R33,U87,L62,D20,R33,U53,R51\nU98,R91,D20,R16,D67,R40,U7,R15,U6,R7"""
        .split())

    val, direction = splitter(day03)
    kablemap, cx, cy = init_map(val, direction)
    kablemap = draw(kablemap, val, direction, cy, cx)

    assert distance(kablemap, cy, cx) == 135
    assert minway(kablemap, val, direction, cy, cx) == 410
Example #21
0
def test_opcode_three_in_2():
    day = Day(5, 1)
    day.load(typing=int, sep=",")
    day.input(1)
    day.execute_opcode()

    assert day.diagnostic == 7692125
Example #22
0
def test_part1_given1():
    amp_a = Day(7, 1)
    amp_b = Day(7, 1)
    amp_c = Day(7, 1)
    amp_d = Day(7, 1)
    amp_e = Day(7, 1)
    obj = [amp_a, amp_b, amp_c, amp_d, amp_e]
    load_all(
        obj,
        data=
        "3,23,3,24,1002,24,10,24,1002,23,-1,23,101,5,23,23,1,24,23,23,4,23,99,0,0"
        .split(','))
    maximum, _ = find_max_sequence(amp_a, amp_b, amp_c, amp_d, amp_e)
    assert maximum == 54321
Example #23
0
def test_part1_given2():
    amp_a = Day(7, 1)
    amp_b = Day(7, 1)
    amp_c = Day(7, 1)
    amp_d = Day(7, 1)
    amp_e = Day(7, 1)
    obj = [amp_a, amp_b, amp_c, amp_d, amp_e]
    load_all(
        obj,
        data=
        "3,31,3,32,1002,32,10,32,1001,31,-2,31,1007,31,0,33,1002,33,7,33,1,33,31,31,1,32,31,31,4,31,99,0,0,0"
        .split(','))
    maximum, _ = find_max_sequence(amp_a, amp_b, amp_c, amp_d, amp_e)
    assert maximum == 65210
Example #24
0
def test_parts(tty, result):
    day = Day(9, 1)
    day.load(typing=int, sep=",")

    day.input(tty)
    day.execute_opcode()
    assert day.result == result
Example #25
0
def test_example2_p2(example):
    day = Day(22)
    data = """Player 1:
43
19

Player 2:
2
29
14"""

    day.load(data, process=False)
    return day
    assert main(example, part=2) == 105
Example #26
0
def test_part_1():
    part1 = Day(8, 1)
    part1.load(typing=str, sep=",")

    part1.data = shaper(part1.data, 25, 6)
    part1.bake()

    layer_i = min_layer(part1.data)

    part1.answer(hash(part1.data, layer_i), v=1)
    assert part1.result == 2520
Example #27
0
def test_given(data, result, limit):
    test = Day(4, 1)
    test.load([data], sep="-")

    test.apply(check_password, limit_groups=limit)
    test.answer(sum(test.data))

    assert test.result == result
Example #28
0
def test_part1_given0():
    part1 = Day(9, 1)
    part1.load(
        data="109,1,204,-1,1001,100,1,100,1008,100,16,101,1006,101,0,99".split(
            ','))
    part1.apply(int)
    part1.opcode()
    assert part1.result == 99
Example #29
0
def test_part2_given0():
    part2 = Day(6, 2)
    part2.load(data=[
        'COM)B', 'B)C', 'C)D', 'D)E', 'E)F', 'B)G', 'G)H', 'D)I', 'E)J', 'J)K',
        'K)L', 'K)YOU', 'I)SAN'
    ])

    orbit = make_orbit_dict(part2.data)

    you = way_to_center(orbit, 'YOU', [])
    san = way_to_center(orbit, 'SAN', [])
    new_center = find_new_center(you, san)

    assert distance_to_center(orbit, new_center, 'YOU') + distance_to_center(
        orbit, new_center, 'SAN') - 2 == 4
Example #30
0
def test_part1():
    part1 = Day(2, 1)
    part1.load(typing=int, sep=',')

    part1.data[1] = 12
    part1.data[2] = 2
    part1.opcode()
    assert part1.data[0] == 3409710