Master Mind
Jeux en GW-Basic (PC-Basic)

PC-BASIC

MASTERMI.BAS

Dans le numéro de mars-avril 1976 de Creative, nous avons publié une version informatisée de Master Mind, un jeu de logique. Master Mind est joué par deux personnes - l'une s'appelle le créateur de code ; l'autre, le décrypteur. Au début du jeu, le créateur de code forme un code ou une combinaison de pions colorés.

Il les cache au briseur de code. Le casseur de code tente alors de déduire le code, en plaçant ses propres suppositions, une à la fois, sur le tableau.

Après avoir fait une supposition (en plaçant une combinaison de chevilles colorées sur le tableau), le créateur de code donne ensuite au décrypteur des indices pour indiquer à quel point la supposition était proche du code. Pour chaque cheville dans la supposition que c'est la bonne couleur et dans la bonne position, le briseur de code obtient une cheville noire.

Pour chaque cheville dans l'hypothèse qui est de la bonne couleur mais pas dans la bonne position, le briseur de code obtient une cheville blanche. Notez que ces piquets noirs et blancs n'indiquent pas quels piquets dans la supposition sont corrects, mais simplement qu'ils existent.

Par exemple, si le code était :

Jaune Rouge Rouge Vert et ma suposition était Rouge Rouge Jaune Noir

Je recevrais deux chevilles blanches et une cheville noire.

Je ne saurais pas (sauf en comparant les suppositions précédentes) laquelle des chevilles dans ma supposition était de la bonne couleur dans la bonne position.

De nombreuses personnes ont écrit des programmes informatiques pour jouer au Master Mind dans le rôle passif, c'est-à-dire que l'ordinateur est le créateur de code et l'humain est le décrypteur.

C'est relativement trivial; le défi est d'écrire un programme qui peut également jouer activement en tant que briseur de code.

En fait, la tâche consistant à amener l'ordinateur à déduire la bonne combinaison n'est pas du tout difficile. Imaginez, par exemple, que vous fassiez une liste de tous les codes possibles.

Pour commencer, vous sélectionnez une supposition dans votre liste au hasard. Puis, au fur et à mesure que vous recevez des indices, vous rayez de la liste les combinaisons dont vous savez qu'elles sont impossibles.

Par exemple, si votre supposition est Rouge Rouge Vert Vert et que vous ne recevez aucun pion, alors vous savez que toute combinaison contenant un pion rouge ou vert est impossible et peut être rayée de la liste.

Le processus se poursuit jusqu'à ce que la solution correcte soit atteinte ou qu'il ne reste plus de combinaisons sur la liste (auquel cas vous savez que le créateur de code a fait une erreur en vous donnant les indices quelque part).

Notez que dans cette implémentation particulière, nous ne créons jamais réellement une liste des combinaisons, mais gardons simplement une trace de celles (dans un ordre séquentiel) qui peuvent être correctes.

En utilisant ce système, nous pouvons facilement dire que la 523ème combinaison peut être correcte, mais pour produire réellement la 523ème combinaison, nous devons compter depuis la première combinaison (ou la précédente, si elle était inférieure à 523).

En fait, ce problème pourrait être simplifié en une conversion de base 10 en base (nombre de couleurs), puis en ajustant les valeurs utilisées dans la fonction MID$ afin de ne pas prendre un caractère zéro d'une chaîne.

Nous avons essayé une version qui conservait une liste réelle de toutes les combinaisons possibles (sous forme de tableau de chaînes), qui était nettement plus rapide que cette version, mais qui consommait énormément de mémoire. A

u début de ce jeu, vous entrez le nombre de couleurs et le nombre de positions que vous souhaitez utiliser (ce qui affectera directement le nombre de combinaisons) et le nombre de tours que vous souhaitez jouer.

Pendant que vous jouez en tant que briseur de code, vous pouvez taper BOARD à tout moment pour obtenir une liste de vos suppositions et indices précédents, et QUIT pour terminer la partie.

Notez que cette version utilise des tableaux de chaînes, mais c'est simplement pour des raisons de commodité et peut facilement être converti pour un BASIC qui n'a pas de tableaux de chaînes tant qu'il a une fonction MID$.

En effet, les tableaux de chaînes sont unidimensionnels, ne dépassent jamais une longueur supérieure au nombre de positions et les éléments ne contiennent jamais plus d'un caractère.

Master Mind® est un jeu fabriqué par Invicta Plastics, Ltd.

 

 

 

 

 

 

 

Recherche personnalisée