def test_part1_given_0(): part1 = Day(5,1) part1.load(data="3,0,4,0,99".split(',')) part1.apply(int) part1.opcode(1) assert part1.result == 1
def test_part2_given(data, result): part2 = Day(1, 2) part2.load(typing=int, data=[data]) part2.answer(sum(part2.apply(fuelchain))) assert part2.result == result
def test_part1(): part1 = Day(1, 1) part1.load(typing=int) assert sum(part1.apply(fuel)) == 3279287
def test_part1_given(data, result): part1 = Day(1, 1) part1.load(typing=int, data=[data]) part1.answer(sum(part1.apply(fuel))) assert part1.result == result
def test_part2(): part2 = Day(1, 2) part2.load(typing=int) assert sum(part2.apply(fuelchain)) == 4916076
def test_part1_given1(): part1 = Day(9, 1) part1.load(data="1102,34915192,34915192,7,4,7,99,0".split(',')) part1.apply(int) part1.opcode() assert part1.result == 1219070632396864
def test_part1_given2(): part1 = Day(9, 1) part1.load(data="104,1125899906842624,99".split(',')) part1.apply(int) part1.opcode() assert part1.result == 1125899906842624
def test_part1(data, result): part1 = Day(10, 1) part1.load(data=data) part1.apply(list) assert find_max_asteroid(part1) == result
def test_part1(): day = Day(3, 1) day.load(typing=str) day.apply(list) day.answer(count_trees(day.data, 3, 1)) assert day.result == 270
break else: doub = False sort = "".join(sorted(password)) == password return six and doub and sort if __name__ == "__main__": # Part 1 part1 = Day(4, 1) part1.load(typing=int, sep="-") part1.load(list(range(part1.data[0], part1.data[1] + 1))) part1.apply(str) part1.apply(check_password) print(part1.answer(part1.sum())) # Part 2 part2 = Day(4, 2) part2.load(typing=int, sep="-") part2.load(list(range(part2.data[0], part2.data[1] + 1))) part2.apply(str) part2.apply(check_password, limit_groups=True)
# part1.load() # part1.apply(list) # print(find_max_asteroid(part1)) # print(time()-bla) part2 = Day(10, 2) part2.load(data=""".#..##.###...####### ##.############..##. .#.######.########.# .###.#######.####.#. #####.##.#.##.###.## ..#####..#.######### #################### #.####....###.#.#.## ##.################# #####.##.###..####.. ..######..##.####### ####.##.####...##..# .#####..#.######.### ##...#.##########... #.##########.####### .####.#.###.###.#.## ....##.##.###..##### .#.#.###########.### #.#.#.#####.####.### ###.##.####.##.#..##""".split()) part2.apply(list) print(vaporize(part2, 0))
def center_search(orbits: list, end_one: str, end_two: str): chain = orbits.copy() center_one, one = traverse_orbits(chain, [end_one]) center_two, two = traverse_orbits(chain, [end_two]) common = set(one.keys()) & set(two.keys()) closest = max(one[x] for x in common) return one[end_one] - 1 + two[end_two] - 1 - closest * 2 if __name__ == "__main__": part1 = Day(6, 1) part1.load() part1.apply(str.split, sep=")") chain = get_chain(part1.data) end_points = get_endpoints(part1.data) orbits, traverse = traverse_orbits(chain, end_points) part1.answer(orbits, v=True) part2 = Day(6, 2) part2.load() part2.apply(str.split, sep=")") chain = get_chain(part2.data) part2.answer(center_search(chain, "SAN", "YOU"), v=True)
def fuelchain(data): fuel = data data = 0 while fuel > 0: fuel = fuel // 3 - 2 if fuel > 0: data += fuel return (data) if __name__ == '__main__': # --Part 1-- 3295206 part1 = Day(1, 1) part1.load(int) part1.apply(fuel) result = sum(part1.data) print(part1.answer(result)) # --Part 2-- 4939939 part2 = Day(1, 2) part2.load(int) part2.apply(fuelchain) result = sum(part2.data) print(part2.answer(result))
Arguments: module {int} -- Weight of Module Returns: int -- Total Fuel Requirements with "wishing really hard" """ out = [fuel(module)] while out[-1] > 0: out.append(fuel(out[-1])) return sum(out[:-1]) # Skip last one if __name__ == "__main__": ## Part One part1 = Day(1, 1) part1.load(typing=int) out = sum(part1.apply(fuel)) print(part1.desc) print(part1.answer(out)) ## Part 2 part2 = Day(1, 2) part2.load(typing=int) out = sum(part2.apply(fuelchain)) print(part2.desc) print(part2.answer(out))