Sujet : Re: F-Nim
De : zzz (at) *nospam* aol.com (Dominique)
Groupes : fr.rec.jeux.enigmesDate : 21. Oct 2022, 17:13:09
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <tiucu5$lca2$1@dont-email.me>
References : 1
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0
Le 21/10/2022 à 11:10, Olivier Miakinen a écrit :
[diapublication, suivi vers fr.rec.jeux.enigmes]
Bonjour,
Voici un autre jeu qui, une fois résolu stratégiquement, pourra fournir
le sujet d'une programmation en Python[¹].
Comme dans le(s) jeu(x) de Nim, c'est un jeu à deux joueurs dans lequel
il s'agit de retirer des allumettes jusqu'à ce qu'il n'en reste plus.
Bonsoir,
J'avais une variante. À partir d'un nombre N de frites, mais c'est comme les allumettes, on décide du nombre maximum de frites qu'on peut retirer, depuis 2 jusqu'à... N-1.
Chaque joueur retire le nombre de frites qu'il veut, entre 1 et le nombre maximum qu'on peut prendre. Le gagnant est celui qui prélève la dernière frite. Il y a une stratégie gagnante à tous les coups, si l'adversaire commet une unique erreur. Autrement, celui qui commence peut gagner :
import random
cx=int(random.uniform(1,3))
if cx==1:
choix=False
else:
choix=True
#choix=False
nbf=int(input('Combien de frites au départ ? '))
nbm=int(input('Combien de frites pouvons-nous manger à chaque tour ? '))
print('Tirage au sort de celui qui commence ')
if choix == False:
print('Vous commencez')
else:
print('Je commence ')
while nbf!=0:
if choix==False:
prel=int(input('Combien de frites mangez-vous ?'))
if prel>nbm:
prel=nbm
print('Vous avez trop prélevé de frites. Je ramène votre jeu à' ,nbm,' frites')
if prel<1:
prel=1
print('Vous n\'avez pas prélevé suffisamment de frites. Je ramène votre jeu à 1 frite')
else:
if nbf%(nbm+1)==0:
prel=nbm
else:
prel=nbf%(nbm+1)
print('Je prends ',prel,' frites.')
nbf-=prel
print('Il reste', nbf,' frites')
choix=choix==False
choix=choix==False
if choix==True:
print('J\'ai gagné ')
else:
print('Vous avez gagné')