• [^] # Re: En Python

    Posté par (Mastodon) . En réponse au message Advent of Code 2023 : Day 4. Évalué à 2.

    J'aime bien, c'est assez propre et concis !

    Je suis sur quelque chose de nettement moins abstrait, mais l'exercice du jour est assez simple je trouve.

    import sys
    def read_element(winning, numbers):
     winning = set(int(x) for x in winning.strip().split(" ") if x)
     numbers = set(int(x) for x in numbers.strip().split(" ") if x)
     return winning, numbers
    def input():
     for line in sys.stdin:
     game, elements = line.strip().split(':')
     game = int(game.split(" ")[-1].strip())
     winning, numbers = read_element(*elements.strip().split("|"))
     i = numbers.intersection(winning)
     num = len(i)
     score = 2**(num - 1) if i else 0
     yield game, num, score
    datas = [x for x in input()]
    r = sum(s for *_, s in datas)
    print(f"Score : {r}")
    winnings = {card: 1 for card, *_ in datas}
    for card, num, s in datas:
     wins = winnings[card]
     for i in range(card + 1, card + num + 1):
     winnings[i] += wins
    print(f"Total cards: {sum(winnings.values())}")

    Et le calcul est immédiat aussi.

    • Yth.