• [^] # Re: Ada corse le tout

    Posté par (site web personnel) . En réponse au journal Calendrier de l'Avent du code. Évalué à 4.

    Ça, c'est typique des problèmes avec une résolution intuitive pas optimale, et qui devient intenable pour la seconde partie.

    Plutôt que de stocker une liste de tous les poissons avec leur compteur interne, l'astuce est de plutôt stocker, pour chaque valeur possible de compteur interne (de 0 à 8), le nombre de poissons qui ont cette valeur-là.

    #! /usr/bin/python3
    fishes = [0] * 9 # for each value of their internal timer, the number of fishes with that value
    with open("6.in") as f:
     for word in f.read().rstrip().split(','):
     fishes[int(word)] += 1
    for day in range(256):
     new_fishes = [0] * 9
     for i, n in enumerate(fishes):
     if i == 0:
     new_fishes[6] += n
     new_fishes[8] += n
     else:
     new_fishes[i - 1] += n
     fishes = new_fishes
    print(sum(fishes))