Order and Chaos est une variante du Tic-Tac-Toe joué sur un plateau 6x6. Ce qui rend le jeu unique, cependant, c'est que les deux joueurs peuvent placer un X ou un O! Chaque tour (en commençant par Ordre), un joueur place un X ou un O dans n'importe quelle case inoccupée.
Gagner est simple. L'ordre gagne s'il y a 5 X ou O (verticalement, horizontalement ou en diagonale) d'affilée sur le plateau. Chaos gagne si le plateau est rempli et qu'il n'y a pas de chaînes de 5 X ou Os sur le plateau. Votre travail? Eh bien, puisqu'il s'agit de la programmation d' énigmes et de Code Golf, vous allez programmer le jeu et le jouer au golf.
Les règles
- Vous devez accepter l'entrée comme
x y t
, oùx
ety
sont des coordonnées, ett
est le type de tuile (X
ouO
). Les coordonnées commencent par0 0
dans le coin supérieur gauche et augmentent jusqu'à5 5
(le coin inférieur droit). - Vous devez accepter
q
de quitter et d'imprimerINVALID
si l'utilisateur entre des coordonnées non valides, des tuiles, toute entrée qui n'est pas sous la forme dex y t
, ou essaie de placer une tuile là où il y en a déjà une. (La seule exception estq
, car cela quitte le programme.) - Si la commande gagne, vous afficherez
P1 WINS
. Si le chaos gagne, vous sortirezP2 WINS
. - L'ordre doit passer en premier.
- Un espace vide est représenté par
.
. - Les tuiles sont
X
etO
(majuscules). Vous n'êtes pas obligé d'accepter les minuscules, mais les majuscules sont obligatoires. - Votre planche ne doit être composée que de
.XO
. - En fait, vous simulez les deux joueurs jouant au jeu, sans recevoir de plateau et vérifier qui gagne. Il accepte un coup en entrée, puis imprime le tableau, accepte un autre coup, et ainsi de suite, jusqu'à ce qu'un joueur gagne.
Le tableau de départ ressemble à ceci:
......
......
......
......
......
......
Et après les premières entrées du joueur (Ordre) 1 2 X
, cela devrait ressembler à ceci:
......
......
.X....
......
......
......
De même, lorsque le prochain joueur (Chaos) 3 3 O
entrera, cela ressemblera à ceci:
......
......
.X....
...O..
......
......
Et cela continue jusqu'à ce qu'un joueur gagne.
Comme toujours, les failles standard qui prennent le plaisir de tout sont interdites.
Le gagnant est celui avec le code le plus court le 15 juin à 00h00 UTC (environ un mois à compter de la publication de ce défi.)
la source
INVALID
. J'ai édité ça maintenant, merci.Réponses:
PHP, 316
Voici ma soumission. Il doit être exécuté par php dans la ligne de commande.
Notez que ce code génère des notifications en raison de certains raccourcis que j'ai créés. Faites-moi savoir si ça va. Je peux le corriger en ajoutant quelques caractères supplémentaires. J'ai vérifié cette page et la première réponse dit de supposer que le rapport d'erreurs est désactivé s'il n'y a aucune mention à ce sujet.
Et voici la version non golfée du code:
la source
JavaScript, 360
Modifier le jeu interactif modifié, devrait fonctionner même dans MSIE
Comme demandé, jeu basé sur du texte, entrée via popup, sortie dans la console (pour avoir une police à espacement fixe).
Quittez le jeu avec 'q' ou cliquez sur 'annuler' à l'invite.
N'utilisant pas les fonctionnalités ES5, il devrait fonctionner sur n'importe quel navigateur moder (où vous pouvez avoir un panneau de console JS)
Maintenant, une version interactive et graphique plus amusante , exécutez l'extrait pour jouer.
Afficher l'extrait de code
la source
Java, 565 caractères D:
C'est probablement le golf de code le plus long jamais créé. Je ne suis vraiment pas bon à ça.
la source
Octave, 453
L'implémentation est assez simple, la seule véritable «astuce» à utiliser
format plus
pour prendre en charge l'impression. Voici une version commentée:En raison de l'obligation de vérifier la syntaxe et la validité des entrées, le code utilise
fread()
pour lire un caractère à la fois.J'ai pris soin de sortir le tableau et les messages de manière ordonnée. Si une sortie supplémentaire est acceptable, je pourrais raser quelques octets. Par exemple, en utilisant l'impression automatique (non
disp(F)
), le tableau serait affiché commeAussi, j'ai interprété que chaque coup est donné sur une ligne distincte.
Exemple d'interaction (le
-q
commutateur est juste pour supprimer l'en-tête d'Octave):Le déplacement non valide a provoqué la fermeture du programme (vous ne savez pas si cela était prévu).
la source
x y t
sur une ligne distincte (et aucune autre entrée).