Gomoku

Le Gomoku est un jeu de plateau à deux joueurs, dans lequel pour gagner, chaque joueur doit réussir à aligner 5 pions sur des cases consécutives d'un plateau, horizontalement, verticalement ou en diagonale. Le plateau est une grille carrée, de dimension quelconque.

Écrivez un programme qui lit en entrée le contenu d'une partie de Gomoku, et détermine si l'un des joueurs a gagné.

Contraintes

Entrée

Sortie

Exemple


entrée :

6
0 0 2 0 1 0
0 1 2 2 2 1
0 0 2 0 1 0
0 0 2 1 0 0
0 0 1 0 0 0
0 1 0 0 0 0

sortie :

1

Solution

def gomoku(n: int, grille:list) -> str:
    """Renvoie le vainqueur 1 ou 2, ou 0 sinon...
    """
    # vecteurs : vertical, horizontal, et 2 en diagonale
    vecteurs = [(1, 0), (0, 1), (1, 1), (1, -1)]
    def est_valide(i, j):
        return (0 <= i < n) and (0 <= j < n)
    
    def vérifie(i, j, di, dj):
        """Vérifie un gagnant en (i, j) et
         la direction (di, dj)
        """
        joueur = grille[i][j]
        for k in range(1, 5):
            i += di ; j += dj
            if (not est_valide(i, j)) or grille[i][j] != joueur:
                return 0
        return joueur
    for i in range(n):
        for j in range(n):
            if grille[i][j] != 0:
                for di, dj in vecteurs:
                    joueur = vérifie(i, j, di, dj)
                    if joueur != 0:
                        return joueur
    return 0
n = int(input())
grille = [list(map(int, input().split())) for _ in range(n)]
résultat = gomoku(n, grille)
print(résultat)

Commentaires