Esempio n. 1
0
def day10b():
    """Day 10a."""
    items = helpers.get_input_integers("day10")
    device = max(items) + 3
    jolts = [0] + sorted(items) + [device]

    matrix = []
    n = 0
    while n < len(jolts):
        i = jolts[n]
        group = [i]
        while n + 1 < len(jolts) and jolts[n + 1] == i + 1:
            n += 1
            i = jolts[n]
            group.append(i)
        n += 1
        matrix.append(group)

    factors = []
    for row in matrix:
        print(row)
        if len(row) < 3:
            factors.append(1)
        elif len(row) == 3:
            factors.append(2)
        elif len(row) == 4:
            factors.append(4)
        elif len(row) == 5:
            factors.append(7)
    print(factors)
    print(f"Arrangements: {math.prod(factors)}")
Esempio n. 2
0
def day9a():
    """Day 9a."""
    items = helpers.get_input_integers("day9")
    n = 0
    length = 25
    preamble = items[n:n + length]
    for item in items[length:]:
        helpers.check_encoding(preamble, item)
        n += 1
        preamble = items[n:n + length]
Esempio n. 3
0
def day1a():
    """Day 1: Report Repair."""
    items = helpers.get_input_integers("day1")
    for i in items:
        for j in items:
            if i == j:
                continue
            if i + j == 2020:
                break
        if i + j == 2020:
            break
    print(f"\nAnswer: {i} + {j} = 2020; {i} * {j} = {i * j}")
Esempio n. 4
0
def day1b():
    """Day 1: Report Repair."""
    items = helpers.get_input_integers("day1")
    for i in items:
        for j in items:
            if i == j:
                continue
            for k in items:
                if i in [j, k]:
                    continue
                if i + j + k == 2020:
                    break
            if i + j + k == 2020:
                break
        if i + j + k == 2020:
            break
    print(f"\nAnswer: {i} + {j} + {k} = 2020; {i} * {j} * {k} = {i * j * k}")
Esempio n. 5
0
def day10a():
    """Day 10a."""
    items = helpers.get_input_integers("day10")
    device = max(items) + 3
    jolts = sorted(items) + [device]

    ones = 0
    threes = 0
    last = 0
    for n in jolts:
        diff = n - last
        if diff == 1:
            ones += 1
        elif diff == 3:
            threes += 1
        else:
            print("ERROR: Bad diff!")
        last = n
    print(f"{ones} ones x {threes} threes = {ones * threes}")
Esempio n. 6
0
def day9b():
    """Day 9b."""
    items = helpers.get_input_integers("day9")
    value = 105950735
    length = 2
    while True:
        print(f"Length: {length}")
        start = 0
        end = length
        while end <= len(items):
            group = items[start:end]
            if sum(group) == value:
                print("SUCCESS!")
                print(group)
                weakness = min(group) + max(group)
                print(f"Weakness: {weakness} (length: {length}")
                sys.exit()
            start += 1
            end += 1
        length += 1