def part2(): debug.console.rule("[bold red]Part 2") p = Parse(problem.Get(16)) p.DiscardInvalidTickets() columns = PossibleColumns(p.tickets, p.rules) result = 1 for rule, column in columns.items(): if rule.field.startswith("departure "): result *= p.your_ticket[column] debug.console.log(result)
def part2(): memory = list(problem.Get(8, console.Instruction.FromLine)) for idx, instr in enumerate(memory): trial_memory = copy.deepcopy(memory) if instr.operation == console.Operation.NOP: trial_memory[idx] = console.Instruction( operation=console.Operation.JMP, argument=instr.argument ) elif instr.operation == console.Operation.JMP: trial_memory[idx] = console.Instruction( operation=console.Operation.NOP, argument=instr.argument ) final_state = DetectLoop(trial_memory) if final_state.halted: print(final_state)
def part1(): debug.console.rule("[bold red]Part 1") debug.console.log(sum(Compute1(line) for line in problem.Get(18)))
def part1(): debug.console.rule("[bold red]Part 1") card_public, door_public = [int(s.strip()) for s in problem.Get(25)] card_private = Reverse(card_public, 7) debug.console.log(card_private) debug.console.log(Forward(card_private, door_public))
def part2(): debug.console.rule("[bold red]Part 2") foods = list(problem.Get(21, Food.FromStr)) debug.console.log(Canonicalize(Solve(foods)))
def part2(): adapters = PreprocessAdapters(problem.Get(10, int)) graph = BuildGraph(adapters) print(CountPaths(graph, 0, max(graph.nodes)))
def part1(): data = list(problem.Get(9, int)) print(data[FindFirstInvalidIdx(data, 25)])
def part1(): debug.console.rule("[bold red]Part 1") p = Parse(problem.Get(16)) debug.console.log( sum(sum(invalids) for _, invalids in p.KnownInvalidTickets()))
def part1(): debug.console.rule("[bold red]Part 1") tiles = InitialTiles(Movement(line) for line in problem.Get(24)) debug.console.log(len(tiles))
def part1(): directs = dict(problem.Get(7, LineTransform)) contents = MakeContents(directs) print( sum("shiny gold" in contents(outermost) for outermost in directs.keys()))
def part2(): state = State() state.Interpret2Program(problem.Get(14)) print(sum(state.memory.values()))
def part2(): print(sum(1 for d in problem.Get(2, Entry.FromLine) if d.Part2Valid()))
def part2(): print(get_result(get_point(problem.Get(1, int), 2020, 3)))
def part1(): memory = list(problem.Get(8, console.Instruction.FromLine)) final_state = DetectLoop(memory) print(final_state.accumulator)
def part2(): debug.console.rule("[bold red]Part 2") debug.console.log(sum(Compute2(line.strip()) for line in problem.Get(18)))
def part2(): state = WaypointShip() state = state.ApplyInputs(problem.Get(12)) print(abs(state.position.row) + abs(state.position.col))
def part2(): directs = dict(problem.Get(7, LineTransform)) contents = MakeContents(directs) print(sum(contents("shiny gold").values()))
def part2(): debug.console.rule("[bold red]Part 2") tiles = InitialTiles(Movement(line) for line in problem.Get(24)) for i in range(100): tiles = Step(tiles) debug.console.log(len(tiles))
def part1(): print(max(problem.Get(5, lambda s: SeatID(s))))
def part2(): seats = list(sorted(problem.Get(5, lambda s: SeatID(s)))) print(next(s for s in more_itertools.pairwise(seats) if s[1] - s[0] != 1))
def part1(): debug.console.rule("[bold red]Part 1") foods = list(problem.Get(21, Food.FromStr)) possibilities = PossibleIngredientsForAllergens(foods) safe = SafeIngredients(foods, possibilities) debug.console.log(sum(len(safe & f.ingredients) for f in foods))
def part2(): data = list(problem.Get(9, int)) first_bad_value = data[FindFirstInvalidIdx(data, 25)] lower, upper = FindRangeWithSum(data, first_bad_value) print(MinMaxSum(data[lower:upper + 1]))
def part1(): adapters = PreprocessAdapters(problem.Get(10, int)) differences = Differences(adapters) counts = collections.Counter(differences) print(counts[1] * counts[3])