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_part2(): part2 = Day(10, 2) part2.load(sep="\n") part2.data = process_map(part2.data) part2.answer(wazer_wifle(part2.data, (23, 20), 200), v=2) assert part2.result[0] * 100 + part2.result[1] == 1119
def test_part2(): day = Day(3, 2) day.load(typing=str) day.apply(list) day.answer( count_trees(day.data, 1, 1) * count_trees(day.data, 3, 1) * count_trees(day.data, 5, 1) * count_trees(day.data, 7, 1) * count_trees(day.data, 1, 2)) assert day.result == 2122848000
def test_summary(): day = Day(1, 1) day.load([1, 2, 3]) day.summary() day.answer(7) day.summary()
def test_part2(): part2 = Day(6, 2) part2.load() part2.apply(str.split, sep=")") chain = get_chain(part2.data) part2.answer(center_search(chain, "SAN", "YOU")) assert part2.result == 481
def test_part1(): part1 = Day(10, 1) part1.load(sep="\n") part1.data = process_map(part1.data) part1.answer(count_visible(part1.data)[0], v=1) assert part1.result == 334
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_part_1(): 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) amp_e.answer(max(amp_chain(amps, num) for num in permutations(range(5))), v=True) assert amp_e.result[0] == 79723
def test_part(result, limit): test = Day(4, 1) test.load(typing=int, sep="-") test.load(list(range(test.data[0], test.data[1] + 1))) test.apply(str) test.apply(check_password, limit_groups=limit) test.answer(test.sum()) assert test.result == result
def test_given_1(): part1 = Day(8, 1) part1.load(["123456789012"]) part1.data = shaper(part1.data, 3, 2) part1.bake() assert part1.data.shape == (2, 2, 3) layer_i = min_layer(part1.data) assert layer_i == 0 part1.answer(hash(part1.data, layer_i), v=1) assert part1.result == 1
def test_part1(): part1 = Day(6, 1) part1.load() part1.apply(str.split, sep=")") chain = get_chain(part1.data) end_points = get_endpoints(part1.data) orbits, _ = traverse_orbits(chain, end_points) part1.answer(orbits) assert part1.result == 315757
def test_part1_given_0(): day = Day(7, 1) day.load( typing=str, data='''light red bags contain 1 bright white bag, 2 muted yellow bags. dark orange bags contain 3 bright white bags, 4 muted yellow bags. bright white bags contain 1 shiny gold bag. muted yellow bags contain 2 shiny gold bags, 9 faded blue bags. shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags. dark olive bags contain 3 faded blue bags, 4 dotted black bags. vibrant plum bags contain 5 faded blue bags, 6 dotted black bags. faded blue bags contain no other bags. dotted black bags contain no other bags.'''.split('\n')) day.answer(howmanycontain(prepare(day.data), 'shiny gold bag', [])) assert day.result == 4
def test_given(data, a1, a2): part1 = Day(3, 1) part2 = Day(3, 2) part1.load(data) part2.load(part1.data) pathA = path(part1.data[0]) pathB = path(part1.data[1]) union = intersect(pathA, pathB) part1.answer(min(abs(coord[0]) + abs(coord[1]) for coord in union)) part2.answer(min(pathA[coord] + pathB[coord] for coord in union)) assert part1.result == a1 assert part2.result == a2
def test_given_0(): test = Day(4, 1) test.load([1002, 4, 3, 4, 33], sep=",") test.execute_opcode() print(test.answer(test.data[4])) assert test.result == 99
def test_part2(): 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.concurrent = True load_all(amps) amp_e.answer(max(feedback(amps, num) for num in permutations(range(5, 10))), v=True) assert amp_e.result == 70602018
def test_starcounts(data, result): part1 = Day(10, 1) raw_data = data.split() part1.load(raw_data, sep="\n") part1.data = process_map(part1.data) print(part1.data) print(count_visible(part1.data)[0]) part1.answer(count_visible(part1.data)[0], v=1) assert part1.result == result
def test_part1_given_0(): day = Day(3, 1) day.load(typing=str, data='''..##....... #...#...#.. .#....#..#. ..#.#...#.# .#...##..#. ..#.##..... .#.#.#....# .#........# #.##...#... #...##....# .#..#...#.#'''.split()) day.apply(list) day.answer(count_trees(day.data, 3, 1)) assert day.result == 7
def test_part_result(): part1 = Day(3, 1) part2 = Day(3, 2) part1.load() part1.load(data={0: part1.data[0].split(","), 1: part1.data[1].split(",")}) pathA = path(part1.data[0]) pathB = path(part1.data[1]) union = intersect(pathA, pathB) part1.answer(min(abs(coord[0]) + abs(coord[1]) for coord in union)) part2.answer(min(pathA[coord] + pathB[coord] for coord in union)) assert part1.result == 260 assert part2.result == 15612
def test_part1_given_0(): day = Day(4,1) day.load(typing=str, sep='\n\n', data='''ecl:gry pid:860033327 eyr:2020 hcl:#fffffd byr:1937 iyr:2017 cid:147 hgt:183cm iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 hcl:#cfa07d byr:1929 hcl:#ae17e1 iyr:2013 eyr:2024 ecl:brn pid:760753108 byr:1931 hgt:179cm hcl:#cfa07d eyr:2025 pid:166559648 iyr:2011 ecl:brn hgt:59in'''.split('\n\n')) day.answer(count_present(day.data)) assert day.result == 2
def test_part2_given_0(): day = Day(6, 2) day.load(typing=str, sep='\n\n', data='''abc a b c ab ac a a a a b'''.split('\n\n')) day.answer(sum_allyes(day.data)) assert day.result == 6
def test_given(): part1 = Day(6, 1) part1.load( """COM)B B)C C)D D)E E)F B)G G)H D)I E)J J)K K)L""".split() ) part1.apply(str.split, sep=")") chain = get_chain(part1.data) end_points = get_endpoints(part1.data) orbits, _ = traverse_orbits(chain, end_points) part1.answer(orbits) assert part1.result == 42
def test_given2(): part2 = Day(6, 2) part2.load( """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""".split() ) part2.apply(str.split, sep=")") chain = get_chain(part2.data) part2.answer(center_search(chain, "SAN", "YOU")) assert part2.result == 4
from util import Day if __name__ == '__main__': # --Part01-- input=1 result=7692125 part1 = Day(5,1) part1.load(typing=int,sep=',') part1.opcode(1) print(part1.answer(part1.result)) # --Part02-- input=5 result=14340395 part2 = Day(5,2) part2.load(typing=int,sep=',') part2.opcode(5) print(part2.answer(part2.result))
x += dx[index[rlud]] y += dy[index[rlud]] if (x, y) not in out: out[(x, y)] = steps # out[(x,y)] = 1 Part 1, you served me well return out def intersect(pathA: dict, pathB: dict) -> list: return list(set(pathA.keys()) & set(pathB.keys())) if __name__ == "__main__": ## Part One part1 = Day(3, 1) part2 = Day(3, 2) part1.load() part1.load(data={0: part1.data[0].split(","), 1: part1.data[1].split(",")}) part2.data = part1.data pathA = path(part1.data[0]) pathB = path(part1.data[1]) union = intersect(pathA, pathB) print(part1.answer(min(abs(coord[0]) + abs(coord[1]) for coord in union))) print(part2.answer(min(pathA[coord] + pathB[coord] for coord in union)))
x += r y += d return (count) def extend(data): for i in range(len(data)): data[i].extend(data[i]) return (data) if __name__ == '__main__': # --Part 1-- 270 part1 = Day(3, 1) part1.load() part1.apply(list) print(part1.answer(count_trees(part1.data, 3, 1))) # --Part 2-- 2122848000 part2 = Day(3, 2) part2.load() part2.apply(list) part2.answer( count_trees(part2.data, 1, 1) * count_trees(part2.data, 3, 1) * count_trees(part2.data, 5, 1) * count_trees(part2.data, 7, 1) * count_trees(part2.data, 1, 2)) print(part2.answer())
from util import Day if __name__ == '__main__': # --Part 1-- input=1 result=3335138414 part1 = Day(9, 1) part1.load(typing=int, sep=',') part1.opcode(1) print(part1.answer()) # --Part 2-- input=2 result=49122 part2 = Day(9, 2) part2.load(typing=int, sep=',') part2.opcode(2) print(part2.answer())
def test_given(data, index, result): part1_obj = Day(2, 1) part1_obj.load(data) part1_obj.execute_opcode() print(part1_obj.answer(part1_obj.data[index])) assert part1_obj.result == result
def test_part2_given_3(): part2 = Day(1, 2) part2.load(typing=int, data=[100756]) part2.answer(sum(part2.apply(fuelchain))) assert part2.result == 50346
def test_part2_given_1(): part2 = Day(1, 2) part2.load(typing=int, data=[1969]) part2.answer(sum(part2.apply(fuelchain))) assert part2.result == 966
def test_part1_given_3(): part1 = Day(1, 1) part1.load(typing=int, data=[100756]) part1.answer(sum(part1.apply(fuel))) assert part1.result == 33583