L'exercice "cats with hats" consiste à prendre 100 chats, faire le tour de chacun 100 x.
Chaque fois qu'on passe devant un chat sans chapeau on lui on pose un.
Et si il en a déjà un on le lui enlève.
On fait comme ça sur 1 chat sur 1 au 1er tour, 1 chat sur 2 au 2e tour, 1 chat sur 3 au 3e tour, ainsi de suite jusqu'au 100e tour (ou on ne fera donc que le dernier chat).
Ma logique globale semble être bonne car j'arrive (presque !) au résultat escompté, sauf que tout est décalé de +1 !
Pour l'exemple ici j'ai tout réduit à 10 au lieu de 100.
Résultat correct attendu :
1 hat
4 hat
9 hat
Mon résultat à moi :
2 hat
5 hat
10 hat
Mon script:
cats = {}
# put 100 cats key with "no hat" value in dict cats
for cat in range(1, 11):
cats[cat] = "no hat"
step = 0
# we'll do 100 turn
for turn in range(1, 11):
step += 1
# give or remove hat for each cat
for cat in range(1, 11, step):
if cats[cat] == "no hat":
cats[cat] = "hat"
else:
cats[cat] = "no hat"
print cats, "\n"
for cat in cats:
if cats[cat] == "hat":
print cat, cats[cat]
else:
pass
Je pense bien avoir pris en compte les exclusions de range et tout, mais je ne vois pas pourquoi mon résultat est décalé de +1 et j'ai beau utiliser le debugger je ne comprends toujours pas.