Exemple #1
0
def get_result(fname, window):
    lines = helper.read_lines_as_ints(fname)
    for i in range(window, len(lines)):
        curr = lines[i]
        prev_window = lines[(i-window):i]
        # print(curr, prev_window)
        if not check(curr, prev_window):
            return curr
Exemple #2
0
def main() -> None:
    # card_public_key, door_public_key = helper.read_lines_as_ints("example.txt")
    card_public_key, door_public_key = helper.read_lines_as_ints("input.txt")

    # print(card_public_key)
    # print(door_public_key)

    crypto = Crypto(card_public_key, door_public_key)
    crypto.start()
    print()
    print("encryption key:", crypto.encryption_key)
Exemple #3
0
def main():
    # fname = "example.txt"
    fname = "input.txt"
    numbers = helper.read_lines_as_ints(fname)

    for a, b, c in combinations(numbers, 3):
        if a + b + c == GOAL:
            print(f"# {a}, {b}, {c}")
            print()
            result = a * b * c
            print(result)
            break
Exemple #4
0
def main():
    # settings = 'example'
    settings = 'input'

    fname = config[settings]['fname']
    window = config[settings]['WINDOW']

    lines = helper.read_lines_as_ints(fname)
    invalid_number = part1.get_result(fname, window)

    print("invalid_number:", invalid_number)
    data = find_sum(invalid_number, lines)
    print("contiguous sum makers:", data)
    result = min(data) + max(data)
    print()
    print(f"result: {result}")
Exemple #5
0
def main():
    # lines = helper.read_lines_as_ints("example1.txt")
    # lines = helper.read_lines_as_ints("example2.txt")
    lines = helper.read_lines_as_ints("input.txt")
    numbers = sorted(lines)
    numbers = [0] + numbers + [numbers[-1] + 3]
    clusters = []

    print(numbers)
    print("length:", len(numbers))
    print()

    for i in range(0, len(numbers)-2):
        left_elem = numbers[i]
        cl = []
        j = i + 2
        while True:
            right_elem = numbers[j]
            if right_elem - left_elem > 3:
                break
            # else
            middle_elem = numbers[j - 1]    # just to the left of the j^th element
            cl.append(middle_elem)
            j += 1
        #
        if len(cl) > 0:
            clusters.append(cl)
    #
    print("clusters:           ", clusters)
    clusters = join_clusters(clusters)
    print("joined clusters:    ", clusters)

    d = {
        3: 7,
        2: 4,
        1: 2
    }

    multipliers = [d[len(cl)] for cl in clusters]
    print("numbers to multiply:", multipliers)

    result = math.prod(multipliers)
    print()
    print("result:", result)
Exemple #6
0
def main():
    # lines = helper.read_lines_as_ints("example1.txt")    # 7 (1 jolt) * 5 (3 jolts) = 35
    # lines = helper.read_lines_as_ints("example2.txt")    # 22 (1 jolt) * 10 (3 jolts) = 220
    lines = helper.read_lines_as_ints("input.txt")
    numbers = sorted(lines)
    numbers = [0] + numbers + [numbers[-1] + 3]

    one = 0
    three = 0
    for a, b in zip(numbers, numbers[1:]):
        diff = b - a
        if diff == 1:
            one += 1
        elif diff == 3:
            three += 1
    #
    print(numbers)
    print("length:", len(numbers))
    print(one)
    print(three)
    print()
    print("result:", one * three)