Jouons au golf de code!
Le défi est de trouver le vainqueur d'une partie de Tic-Tac-Toe.
Cela a été fait à plusieurs reprises en donnant un tableau qui a un gagnant clair, mais voici la torsion:
Les cellules sont numérotées comme ceci:
1|2|3
-+-+-
4|5|6
-+-+-
7|8|9
Vous obtenez un tableau d'exactement 9 coups comme ça:
{3, 5, 6, 7, 9, 8, 1, 2, 3}
Ceci est analysé comme suit:
- Le joueur 1 marque la cellule 3
- Le joueur 2 marque la cellule 5
- Le joueur 1 marque la cellule 6
- Le joueur 2 marque la cellule 7
- Le joueur 1 marque la cellule 9
- Le joueur 1 a gagné
Remarque: Le jeu ne s'arrête pas après qu'un joueur a gagné, il peut arriver que le joueur perdant réussisse à en obtenir trois d'affilée après le joueur gagnant, mais seule la première victoire compte.
Votre travail consiste maintenant à obtenir 9 numéros en entrée et en sortie du joueur gagnant et du tour au cours duquel la victoire a eu lieu. Si personne ne gagne, sortez quelque chose de constant de votre choix. Vous pouvez recevoir des entrées et fournir des sorties par n'importe quel moyen / format standard.
S'amuser!
Quelques exemples supplémentaires comme demandé:
{2,3,4,5,6,7,1,8,9} => Player 2 wins in round 6
{1,2,4,5,6,7,3,8,9} => Player 2 wins in round 8
{1,2,3,5,4,7,6,8,9} => Player 2 wins in round 8
la source
[X, Y]
? En cas d'égalité, pouvons-nous produire une autre valeur cohérente à la place? Je le recommande, car l'impression de ces cordes exactes ne fait pas vraiment partie du golf. Pour de futures idées de défis, je recommande d'utiliser le bac à sable . :-){3, 5, 6, 7, 9, 8, 1, 2, 3}
" - devrait3
vraiment apparaître deux fois?Réponses:
Rétine , 114 octets
Essayez-le en ligne! Basé sur ma réponse à Tic-Tac-Toe - X ou O? . Sorties
X<N>
si le premier joueur gagne après lesN
tours,O<N>
si le deuxième joueur gagne,T
si aucun ne gagne. Explication:Crée un plateau interne et marque également chaque coup avec le joueur dont c'est le coup.
Applique un coup.
Recherche une victoire, et s'il en trouve une, remplacez le plateau par le gagnant et le nombre de coups restants.
Si les mouvements sont épuisés et que personne n'a gagné, le jeu est à égalité.
Calculez le nombre de tours à partir du nombre de coups restants.
la source
MATL , 39 octets
La sortie est
1
etR
, sur des lignes distinctes, si l'utilisateur 1 gagne au tour R ;0
etR
, sur des lignes distinctes, si l'utilisateur 2 gagne au tour R ;Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
Javascript (ES6), 130 octets
Explication
la source
Java (OpenJDK 8) , 445 octets
Essayez-le en ligne!
La valeur de retour {1,8} signifie que le joueur 1 a gagné au tour 8. La valeur de retour {0,0} signifie match nul.
la source
false
peut être remplacé par1<0
et l'espace après le premier]
peut être supprimé.//Code that was submitted
et//End of code
.Kotlin , 236 octets
Embellie
Tester
TIO
TryItOnline
la source
Python 2 , 170 octets
Essayez-le en ligne! ou Essayez tous les cas de test
la source
Gelée , 38 octets
Essayez-le en ligne!
Victoire du joueur 1: Victoire du
[round, 1]
joueur 2:
[round, 2]
Égalité:
[0, 0]
la source
Python 3.6+, 137 octets
Le format de sortie est
winner number:round
ou-1
pour une égalité. Le joueur 2 est le0
joueur 11
. Entrée sous la forme d'une chaîne non éliminée de nombres carrés indexés à 1.la source
Gelée , 35 octets
Un lien monadique prenant une liste des mouvements et renvoyant une liste,
[move, player]
où les joueurs sont identifiés comme1
(le premier à agir) et0
(le second à agir).Essayez-le en ligne!
Comment?
la source
Python 2, 168 octets
Sorties (joueur, tour) ou 0 pour une égalité.
Mappe le jeu sur un carré magique 3 par 3 et recherche des ensembles de 3 Os ou X totalisant 15.
la source
Nettoyer ,
244... 220 octetsEssayez-le en ligne!
La chaîne itérée en
h
contient non imprimable et est équivalente à"\003\001\000\000"
.la source
Python 2 ,
140136134 octetsEssayez-le en ligne!
EDIT: 4 octets + 2 octets thx à Eric l'Outgolfer.
Génère un tuple (playerNumber, roundNumber) ou False s'il n'y a pas de gagnant.
la source