• # Python pas classieux mais avec des set

    Posté par . En réponse au message Avent du Code, jour 3. Évalué à 3.

    #! /usr/bin/python3
    fichier = 'input_day_3'
    def priority(c):
     return 26*c.isupper() + (ord(c)&31)
    items_p = badges_p = grp_size = 0
    badges_set = set()
    with open(fichier,'r') as f:
     while line := f.readline().strip():
     # part 1
     l = len(line) // 2
     items_p += sum(priority(c) for c in {*line[:l]} & {*line[l:]})
     # part 2
     if not badges_set: 
     badges_set = {*line}
     else:
     badges_set &= {*line}
     grp_size += 1
     if grp_size % 3 == 0:
     badges_p += priority(badges_set.pop())
    print(items_p, badges_p)