Compare commits
1 Commits
f207da0e2b
...
kara-mosr-
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c0e065103 |
58
README.md
58
README.md
@@ -112,4 +112,60 @@ Voici un récapitulatif des commandes Git que vous utiliserez fréquemment :
|
||||
|
||||
## 5. Supprimer une branche
|
||||
|
||||
git branch -d <nom_de_la_branche>
|
||||
git branch -d <nom_de_la_branche>
|
||||
|
||||
|
||||
## Comment fonctionne l’algorithme de victoire (idée générale)
|
||||
|
||||
Dans Hex, un joueur gagne s’il existe un chemin continu de ses pions connectant ses deux bords :
|
||||
|
||||
PLAYER1 : relier gauche → droite
|
||||
|
||||
PLAYER2 : relier haut → bas
|
||||
|
||||
Un “chemin” = une suite de cases adjacentes sur la grille hexagonale (6 voisins possibles) appartenant au joueur.
|
||||
|
||||
Ce que fait l’algo (principe)
|
||||
|
||||
L’algo fait un parcours de graphe (DFS avec une pile, ou BFS avec une file c’est pareil pour le résultat) :
|
||||
|
||||
On prend toutes les cases du bord de départ du joueur (ex: bord gauche pour PLAYER1).
|
||||
|
||||
On ne garde que celles qui contiennent un pion du joueur.
|
||||
|
||||
À partir de ces cases, on explore toutes les cases voisines contenant aussi un pion du joueur, et ainsi de suite.
|
||||
|
||||
Si pendant l’exploration on atteint l’autre bord, alors il existe un chemin → victoire.
|
||||
|
||||
Pourquoi ça marche ?
|
||||
|
||||
Parce que ça revient à demander :
|
||||
|
||||
“Est-ce qu’il existe une composante connexe de pions du joueur qui touche les deux bords ?”
|
||||
|
||||
Le DFS/BFS explore exactement la composante connexe.
|
||||
|
||||
Les 6 voisins en Hex (grille hexagonale)
|
||||
|
||||
Dans ton code, tu as :
|
||||
|
||||
private static final int[][] NEIGHBORS = {
|
||||
{-1, 0}, {+1, 0},
|
||||
{ 0, -1}, { 0, +1},
|
||||
{-1, +1}, {+1, -1}
|
||||
};
|
||||
|
||||
|
||||
Ça signifie qu’une case (r,c) a jusqu’à 6 voisins :
|
||||
'''
|
||||
(r-1,c), (r+1,c) : “haut/bas”
|
||||
|
||||
(r,c-1), (r,c+1) : “gauche/droite”
|
||||
|
||||
(r-1,c+1) et (r+1,c-1) : les 2 diagonales propres au pavage hexagonal
|
||||
'''
|
||||
Complexité
|
||||
|
||||
Au pire, on visite chaque case une seule fois → O(N²) pour un plateau N×N.
|
||||
|
||||
Très correct pour Hex.
|
||||
Reference in New Issue
Block a user