Créer un programme déterministe pour jouer n d tic-tac-toe avec les autres participants.
Votre programme devrait fonctionner lorsque n
(largeur) et d
(numéro de dimension) se trouvent dans ces plages:
n∈[3,∞)∩ℕ ie a natural number greater than 2
d∈[2,∞)∩ℕ ie a natural number greater than 1
n = 3; d = 2
(3 2 soit 3 par 3):
[][][]
[][][]
[][][]
n = 3; d = 3
(3 3 soit 3 par 3 par 3):
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
n = 6; d = 2
(6 2 soit 6 par 6):
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
Etc.
Contribution:
L'entrée sera vers STDIN. La première ligne de saisie sera composée de deux nombres n
et d
sous la forme n,d
.
Après cela sera une ligne composée de coordonnées spécifiant les mouvements qui ont été effectués. Les coordonnées seront listés sous la forme: 1,1;2,2;3,3
. Le coin supérieur gauche est l'origine (0,0 pour 2D). Dans le cas général, cette liste sera comme 1,2,...,1,4;4,0,...,6,0;...
où le premier nombre représente la gauche-droite-ness, la deuxième haut-bas-ness, la troisième à la 3ème dimension, etc. Notez que la première coordonnée est X
s premier tour, la seconde c'est O
le premier tour, ....
Si c'est le premier mouvement, l'entrée sera un nombre suivi d'une ligne vierge.
Par souci de cohérence, l'entrée se terminera toujours par une nouvelle ligne. Exemple d'entrée (\ n est une nouvelle ligne):
10,10\n0,0,0,0,0,0,0,0,0,0;0,2,3,4,5,6,7,8,9,0;0,1,2,3,4,5,6,7,8,9\n
Pour le premier coup:
10,10\n\n
où \n
est le caractère de nouvelle ligne.
Production:
Sortez le déplacement que vous souhaitez effectuer dans le même format que l'entrée (une liste séparée par des virgules). Un coup invalide (c'est-à-dire un coup déjà effectué) entraînera une perte pour le jeu.
Remarque: Vous pouvez utiliser un générateur de nombres aléatoires, tant que vous l'amorcez avec une valeur telle que chaque exécution serait identique dans les mêmes conditions. En d'autres termes, le programme doit être déterministe.
Remarque: seuls les déplacements valides sont autorisés.
Jeux gagnants (Si vous avez joué suffisamment de tic tac toe multidimensionnel, c'est la même chose.)
Pour qu'il y ait une victoire, un joueur doit avoir toutes les cases adjacentes le long d'une ligne. Autrement dit, ce joueur doit avoir des n
mouvements sur une ligne pour être gagnant.
Adjacent:
- chaque tuile est un point; par exemple (0,0,0,0,0) est un point
d=5
- les tuiles adjacentes sont des tuiles telles qu'elles sont les deux points sur la même unité d-cube. En d'autres termes, la distance de Chebyshev entre les tuiles est de 1.
- en d'autres termes, si un point
p
est adjacent à un pointq
, alors chaque coordonnée enp
s coordonnée correspondante en neq
diffère pas de plus d'un. De plus, au moins sur la paire de coordonnées diffère exactement d'un.
Lignes:
- Les lignes sont définies par des vecteurs et une tuile. Une ligne est chaque tuile frappée par l'équation:
p0 + t
<
some vector with the same number of coordinates as p0>
Conditions de simulation et de gain:
Indiquez dans votre réponse si elle est prête pour le classement. Autrement dit, indiquez clairement si votre réponse est terminée ou non.
Si votre réponse est marquée comme terminée, elle ne sera notée qu'au moins 24 heures après la dernière modification du code.
Les programmes doivent fonctionner hors ligne. Si un programme est en train de tricher, il recevra automatiquement un score de
-1
, et ne sera pas noté plus loin. (Comment quelqu'un finirait-il par tricher avec ses programmes?)Si votre programme produit une sortie invalide, elle est immédiatement comptabilisée comme une perte pour le jeu
Si votre programme ne produit pas de sortie après 1 minute, il est immédiatement comptabilisé comme une perte pour le jeu. Si nécessaire, optimisez pour la vitesse. Je ne veux pas avoir à attendre une heure pour tester un programme sur un autre.
Chaque programme sera exécuté contre les autres programmes deux fois pour chacun
n
dans la plage[3,6]
et chacund
dans la plage[2,5]
, une fois au furX
et à mesureO
. Ceci est un tour.Pour chaque match gagné par un programme, il atteint
+3
son score. Si le programme est à égalité (1 victoire et 1 défaite en un seul tour ou égalité pour les deux matchs), il obtient+1
. Si le programme a perdu, il obtient+0
(c'est-à-dire aucun changement).Le programme avec le score le plus élevé gagne. En cas d'égalité, le programme avec le moins de matchs perdus (parmi les concurrents à égalité) gagne.
Remarque: Selon le nombre de réponses, j'ai peut-être besoin d'aide pour exécuter les tests.
Bonne chance! Et que les simulations fonctionnent toujours en votre faveur!