◂ 4 décembre 2023 ▸
Scratchcards : Trouver des nombres gagnants sur des cartes à gratter et gagner de nouvelles cartes
Card 1: 33 56 23 64 92 86 94 7 59 13 | 86 92 64 43 10 70 16 55 79 33 56 8 7 25 82 14 31 …
Card 2: 61 66 75 1 27 38 93 90 34 43 | 94 46 …
⋮
- code1.py
- code2.py
- code2_optim.py
f = open("input.txt", 'r', encoding='utf-8')
lines = [line[:-1] for line in f.readlines()]
def nb_num_gagnants(line:str) -> int :
tokens = line.split() # not the same as line.split(' ') !
sep_indice = tokens.index('|')
tirage: set[int] = set(map(int, tokens[2:sep_indice]))
coches: set[int] = set(map(int, tokens[sep_indice+1:]))
return len(tirage.intersection(coches))
nb_pts = 0
for line in lines:
nb_ok = nb_num_gagnants(line)
nb_pts += int(2**(nb_ok-1)) # int pour avoir 0pt si nb_ok=0 au lieu de 0.5pt
print("Réponse partie 1:", nb_pts)