Beispiel #1
0
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))
Beispiel #5
0
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)))
Beispiel #7
0
def part1():
    data = list(problem.Get(9, int))
    print(data[FindFirstInvalidIdx(data, 25)])
Beispiel #8
0
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))
Beispiel #10
0
def part1():
    directs = dict(problem.Get(7, LineTransform))
    contents = MakeContents(directs)
    print(
        sum("shiny gold" in contents(outermost)
            for outermost in directs.keys()))
Beispiel #11
0
def part2():
    state = State()
    state.Interpret2Program(problem.Get(14))
    print(sum(state.memory.values()))
Beispiel #12
0
def part2():
    print(sum(1 for d in problem.Get(2, Entry.FromLine) if d.Part2Valid()))
Beispiel #13
0
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))
Beispiel #17
0
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))
Beispiel #19
0
def part1():
    print(max(problem.Get(5, lambda s: SeatID(s))))
Beispiel #20
0
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))
Beispiel #21
0
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))
Beispiel #22
0
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])