• # En Python bref

    Posté par (site web personnel) . En réponse au message Avent du Code, jour 2. Évalué à 4.

    Toujours en Python, mais aujourd'hui, point de modélisation objet, c'est du concis, plus en mode calcul :

    from typing import Iterable, Tuple
    def solve_both(lines: Iterable[str]) -> Tuple[int, int]:
     # Symbol -> value for part 1
     values1 = {'A': 1, 'B': 2, 'C': 3, 'X': 1, 'Y': 2, 'Z': 3}
     # Symbol -> value for part 2
     values2 = {'A': 1, 'B': 2, 'C': 3, 'X': -1, 'Y': 0, 'Z': 1}
     score1 = 0 # for part 1
     score2 = 0 # for part 2
     for line in lines:
     char1, char2 = line.split()
     # Values for part 1
     value1_1, value1_2 = values1[char1], values1[char2]
     outcome1 = ((value1_2 - value1_1 + 1) % 3) * 3
     # Values for part 2
     value2_1, result2 = values2[char1], values2[char2]
     value2_2 = (value2_1 + result2 - 1) % 3 + 1
     outcome2 = ((result2 + 1) % 3) * 3
     # We are player 2!
     score1 += value1_2 + outcome1
     score2 += value2_2 + outcome2
     return score1, score2