Ejemplo n.º 1
0
    path = Pt.path((0, 0), slope, path_length)
    return u.count(lambda pt: tree_at(grid, pt), path)


def run_a(input_data):
    lines = input_data.split("\n")
    print(len(lines), "lines")

    tree_count = count_trees(lines, (3, 1))
    print("tree count:", tree_count)


def run_b(input_data):
    lines = input_data.split("\n")
    print(len(lines), "lines")

    slopes = [(1, 1), (3, 1), (5, 1), (7, 1), (1, 2)]

    counts = [count_trees(lines, slope) for slope in slopes]
    print(counts)
    print("product:", math.prod(counts))


if __name__ == "__main__":
    input_data = Puzzle(year=2020, day=3).input_data
    # u.run_for_inputs(TEST_INPUTS, run_a, "A")

    u.run_for_inputs(TEST_INPUTS + [input_data], run_a, "A")
    # u.run_for_inputs(TEST_INPUTS, run_b, "B")
    u.run_for_inputs(TEST_INPUTS + [input_data], run_b, "B")
Ejemplo n.º 2
0
    letter = letter[:1]
    pos1, pos2 = [int(m) - 1 for m in pos.split("-")]

    pos1has = pw[pos1] == letter
    pos2has = pw[pos2] == letter
    answer = pos1has != pos2has  # xor
    # print()
    # print(line)
    # print(f"{pos1=}\t{pw[pos1]=}\t{pos2=}\t{pw[pos2]=}\t{pw=}\t{letter=}\t{answer=}")
    return answer


def runA(input_data):
    data = input_data.split("\n")
    print(len(data), "entries\n")
    print("RESULT:", u.count(valid_password_a, data))


def runB(input_data):
    data = input_data.split("\n")
    print(len(data), "entries\n")
    print("RESULT:", u.count(valid_password_b, data))


if __name__ == "__main__":
    input_data = Puzzle(year=2020, day=2).input_data
    # u.run_for_inputs(TEST_INPUTS, runA, "A")
    u.run_for_inputs(TEST_INPUTS + [input_data], runA, "A")
    # u.run_for_inputs(TEST_INPUTS, runB, "B")
    u.run_for_inputs(TEST_INPUTS + [input_data], runB, "B")