zenithstar95

I love you Aymeric

  • he/him

28 - queer dude - irish - 🏳️‍🌈🏳️‍⚧️🏴
__
Software dev.
I draw suggestive things sometimes.
__
Boyfriend: @hephaistos


CSS Adventurer Plate Generator
stellarzenith.github.io/adventurer-plate/

zenithstar95
@zenithstar95

This is so janky but fuck it. I'm not aiming for efficiency, I'm aiming to get an answer. I am slightly intimidated by Part 2.


zenithstar95
@zenithstar95

I got there eventually.


raw_input = open("input.txt", "r")
input = raw_input.read().splitlines()
raw_input.close()


def search_up_down(line, i):
    if line < 0 or line > total_lines - 1:
        return 0, 0
    if not input[line][i].isdigit():
        lvalue = search_left(line, i - 1)
        rvalue = search_right(line, i + 1)
    else:
        lvalue = search_right(line, i)
        rvalue = 0
    return lvalue, rvalue


def search_left(line, i):
    if i < 0:
        return 0
    if not input[line][i].isdigit():
        return 0
    value = search_left(line, i - 1) * 10
    value += int(input[line][i])
    return value


def search_right(line, i):
    if i <= line_width - 1:
        if not input[line][i].isdigit():
            value = search_left(line, i - 1)
        else:
            value = search_right(line, i + 1)
    else:
        value = search_left(line, i - 1)
    return value


def gear_numbers(line, i):
    up = search_up_down(line - 1, i)
    down = search_up_down(line + 1, i)
    left = search_left(line, i - 1)
    right = search_right(line, i + 1)
    return up[0], up[1], down[0], down[1], left, right


total_lines = len(input)
line_width = len(input[0])
total = 0

for line in range(total_lines):
    for i in range(line_width):
        if input[line][i] == "*":
            gear_numbers_list = gear_numbers(line, i)
            nums_to_multiply = []
            for n in gear_numbers_list:
                if n > 0:
                    nums_to_multiply.append(n)
            if len(nums_to_multiply) == 2:
                result = 1
                for number in nums_to_multiply:
                    result *= number
                total += result
print(total)
syntax highlighting by codehost

You must log in to comment.