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
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
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
def test_summary(): day = Day(1, 1) day.load([1, 2, 3]) day.summary() day.answer(7) day.summary()
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
def test_parts(tty, result): day = Day(9, 1) day.load(typing=int, sep=",") day.input(tty) day.execute_opcode() assert day.result == result
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
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
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
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
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
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