# ###################################################### # Applications des listes en Python # # Application 6 : la dernière carte # ###################################################### # Question 4 - Combien de cartes faut-il dans le paquet de départ pour que la dernière carte porte le numéro 1 ? # Réponse : le nombre de cartes au départ doit être égal à une puissance de 2 (1, 2, 4, 8, 16, 32, 64, etc.) # teste tous les paquets de cartes possédant au moins n cartes au départ jusqu'à ce que la dernière soit 1 : n=100 cartes=[] while cartes!=[1]: n+=1 cartes=list(range(1,n+1)) while len(cartes)>1: # déplace la première carte à la fin du paquet : cartes=cartes[1:]+[cartes[0]] # supprime la première carte : cartes.remove(cartes[0]) print("Dernière carte : %s pour n=%d" % (cartes,n)) # Question 5 - Lien entre le nombre de cartes au départ et le numéro de la dernière carte # Réponse : # Si P est le nombre de carte dans le paquet de départ et que D # est le numéro de la dernière carte alors on remarque # que (2*P)-D = 2047 = 2**11-1 pour 1024 < P < 2048 # Si P=10 et D=5 alors (2*P)-D=15=2**4-1 # Le lien entre P et D est en relation avec les puissances de 2 # Exemple : si P = 9727 cartes alors D=2*P-2**14+1=3071