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/

I completely overcomplicated this for myself for a bit.


Part 1

def parse_input():
    rawinput = open("input.txt", "r")
    input = rawinput.read().splitlines()
    rawinput.close()

    scratchcards = []
    for i in input:
        i = i.removeprefix("Card ").split("|")
        card_id, winning_numbers = i[0].split(":")
        card_id = int(card_id)
        winning_numbers = winning_numbers.split()
        numbers_i_have = i[1].split()
        scratchcard = dict(
            card_id=card_id,
            winning_numbers=winning_numbers,
            numbers_i_have=numbers_i_have,
        )
        scratchcards.append(scratchcard)
    return scratchcards


scratchcards = parse_input()
total_score = 0
for s in scratchcards:
    matches = 0
    for n in s["numbers_i_have"]:
        for w in s["winning_numbers"]:
            if n == w:
                if matches == 0:
                    matches += 1
                else:
                    matches *= 2
    total_score += matches
print(total_score)
syntax highlighting by codehost

Part 2

def parse_input():
    rawinput = open("input.txt", "r")
    input = rawinput.read().splitlines()
    rawinput.close()

    scratchcards = []
    for i in input:
        i = i.removeprefix("Card ").split("|")
        card_id, winning_numbers = i[0].split(":")
        card_id = int(card_id)
        winning_numbers = winning_numbers.split()
        numbers_i_have = i[1].split()
        scratchcard = dict(
            card_id=card_id,
            num_copies=1,
            winning_numbers=winning_numbers,
            numbers_i_have=numbers_i_have,
        )
        scratchcards.append(scratchcard)
    return scratchcards


scratchcards = parse_input()
total = 0
for s in scratchcards:
    matches = 0
    total += s["num_copies"]
    for n in s["numbers_i_have"]:
        for w in s["winning_numbers"]:
            if n == w:
                copied_card = scratchcards[s["card_id"] + matches]
                copied_card["num_copies"] += s["num_copies"]
                matches += 1
print(total)
syntax highlighting by codehost

Maybe one day I'll branch out from just constantly using nested for loops and do something more interesting. I guess I did use some recursion yesterday though.


You must log in to comment.