• # Premier jour : on n'optimise pas, on fonce dans l'tas !

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

    Le premier exercice est trivial :

    import sys
    print(sum(
     int(f"{digit[0]}{digit[-1]}")
     for line in sys.stdin
     for digit in [[x for x in line if x in "0123456789"]]
     if digit
    )

    On fait python3 01.py < 01.input ou 01.demo pour les données de test, et hop, résultat en une commande.

    Le second exercice sans optimisation consiste à rechercher les chiffres et les chiffres écrits, ajouter ça dans une liste, et faire pareil :

    import sys
    text = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    def analyze(line):
     def _iter():
     for n in range(len(line)):
     if line[n] in "0123456789":
     yield line[n]
     continue
     for t in text:
     if line[n:].startswith(t):
     yield str(text.index(t))
     continue
     return _iter()
    print(sum(
     int(f"{digit[0]}{digit[-1]}")
     for line in sys.stdin
     for digit in [list(analyze(line))]
     if digit
    )

    La fonction analyze prend une ligne, la parcours charactère par charactère, et regarde si c'est un chiffre, ou l'écriture d'un chiffre, et envoie dans l'itérateur.
    Zéro intelligence, zéro optimisation, zéro plantage.
    Bientôt on pourra plus faire comme ça !
    Mais bon, jour 1, on se dérouille les neurones, on reprend le pli des traitements de flux, on essaie déjà de mettre des itérateurs plutôt que de tout traiter en mémoire, juste pour reprendre les futurs bonnes habitudes...

    • Yth.