Deutsch   English   Français   Italiano  
<titnme$31k8$1@cabale.usenet-fr.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!news.trigofacile.com!usenet-fr.net!.POSTED!not-for-mail
From: Olivier Miakinen <om+news@miakinen.net>
Newsgroups: fr.rec.jeux.enigmes,fr.comp.lang.python
Subject: F-Nim
Followup-To: fr.rec.jeux.enigmes
Date: Fri, 21 Oct 2022 11:10:37 +0200
Organization: There's no cabale
Lines: 56
Message-ID: <titnme$31k8$1@cabale.usenet-fr.net>
NNTP-Posting-Host: 220.12.205.77.rev.sfr.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit
X-Trace: cabale.usenet-fr.net 1666343438 99976 77.205.12.220 (21 Oct 2022 09:10:38 GMT)
X-Complaints-To: abuse@usenet-fr.net
NNTP-Posting-Date: Fri, 21 Oct 2022 09:10:38 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
 Firefox/52.0 SeaMonkey/2.49.4
X-Mozilla-News-Host: news://news.galacsys.net:119
Bytes: 3474

[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.
Voici la r�gle compl�te.

==========================================================================
On a un seul tas de N allumettes. Le premier joueur retire le nombre
d'allumettes qu'il veut, sa seule interdiction �tant de retirer la
totalit� du tas. Ensuite, chaque joueur retire un nombre d'allumettes
de son choix, entre 1 allumette et deux fois le nombre d'allumettes
que vient de retirer son adversaire. Le gagnant est celui qui retire la
derni�re allumette et vide le tas.
==========================================================================

Il s'agit de trouver la meilleure strat�gie pour chaque joueur en fonction
de la taille N du tas au d�part.

==========================================================================
Prenons un exemple avec N = 15.
Le premier joueur A doit retirer un nombre d'allumettes compris entre
1 et 14 (il n'a pas le droit de tout retirer au premier coup).

Supposons que A retire 4 allumettes, il en reste 11.
Alors B peut retirer n'importe quel nombre entre 1 et 8 (8 = 2�4).
B retire 3 allumettes, il en reste 8.
A peut retirer n'importe quel nombre entre 1 et 6 (6 = 2�3).
A retire 1 allumette, il en reste 5.
B peut retirer n'importe quel nombre entre 1 et 2 (2 = 2�1)
B retire 1 allumette, il en reste 4.
A peut retirer n'importe quel nombre entre 1 et 2 (2 = 2�1)
A retire 1 allumette, il en reste 3.
B peut retirer n'importe quel nombre entre 1 et 2 (2 = 2�1)
B retire 2 allumettes, il en reste 1.
A retire la derni�re allumette, il a gagn�.

Noter que B aurait pu ne retirer qu'une allumette � son dernier coup,
mais �a n'aurait rien chang� parce que A aurait pu retirer les deux
derni�res allumettes et gagner quand m�me.
==========================================================================


[�] Pour info, j'ai eu un tel programme (pas en python !) dans une
calculette TI 58 dot�e d'une m�moire (programme + donn�es) de 480
octets. Ce programme �tait capable de gagner syst�matiquement d�s
qu'il �tait dans une situation permettant de le faire. Je crois m�me
que le programme pouvait tourner sur une TI 57 (seulement 50 octets
de m�moire disponibles pour le programme, les donn�es �tant � part).

-- 
Olivier Miakinen