La banque a été cambriolée et tous les voyous de la mafia locaux ont un alibi inhabituel: ils étaient chez eux en train de jouer à Connect 4! Afin de faciliter l’enquête, il vous est demandé de rédiger un programme validant toutes les cartes Connect 4 saisies afin de vérifier que les positions sont bien des positions d’un jeu Connect 4 valide et qu’elles n’ont pas été assemblées à la hâte. dès que la police a frappé à la porte.
Les règles pour connecter 4: les joueurs R
et les joueurs Y
déposent à tour de rôle les carreaux de leur couleur dans les colonnes d’une grille 7x6. Lorsqu'un joueur lâche une tuile dans la colonne, il tombe pour occuper la position non remplie la plus basse de cette colonne. Si un joueur réussit à obtenir une série horizontale, verticale ou diagonale de quatre tuiles de sa couleur sur le tableau, il gagne et la partie se termine immédiatement.
Par exemple (avec R
démarrage), voici une position impossible pour Connect 4.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
Votre programme ou fonction doit intégrer une carte Connect 4 et renvoyer soit
- Une valeur de fausseté, indiquant que la position est impossible ou
- Une chaîne de nombres de 1 à 7, ce qui indique une séquence de coups menant à cette position (les colonnes sont numérotées
1
à7
partir de gauche à droite, et ainsi de la séquence112
, par exemple, indique un mouvement rouge dans la colonne1
, suivi d'un mouvement jaune dans la colonne1
, suivi d'un mouvement rouge dans la colonne2
). Vous pouvez choisir une numérotation de colonne autre que 1234567 si vous le souhaitez, dans la mesure où vous le spécifiez dans votre solution. Si vous souhaitez renvoyer la liste dans un autre format; Par exemple, en tant que tableau,[2, 4, 3, 1, 1, 3]
c'est très bien aussi, tant qu'il est facile de voir quels sont les déplacements.
Vous pouvez choisir de lire la carte dans dans tout format raisonnable , y compris en utilisant des lettres autres que R
et Y
pour les joueurs, mais vous devez spécifier quel joueur commence. Vous pouvez supposer que le plateau sera toujours 6x7, avec deux joueurs.
Vous pouvez supposer que les postes que vous recevez sont au moins physiquement possibles à créer sur une carte Connect 4 standard; c'est-à-dire qu'il n'y aura pas de pièces "flottantes". Vous pouvez supposer que le tableau sera non vide.
C'est le code de golf, donc la réponse la plus courte gagne. Les failles standard s'appliquent.
Exemples
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |