You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
"Comment écrire une fonction qui retourne tous les pions qu'une dame peut prendre au [jeu de dames](https://fr.wikipedia.org/wiki/Dames).\n",
10
+
"\n",
11
+
"Après avoir créé un damier, on créé deux fonctions :\n",
12
+
"\n",
13
+
"* une fonction qui retourne les dames et les pions\n",
14
+
"* une fonction qui retourne les pions qu'une dame peut prendre\n",
15
+
"\n",
16
+
"Il suffira d'appeler la fonction pour toutes les dames du jeu pour connaître tous les pions qu'un joueur peut prendre avec ses dames.\n",
17
+
"\n",
18
+
"Dans un premier temps, il convient de représenter le damier. On choisira une matrice [numpy](https://numpy.org/) qu'il faut remplir de valeur numérique :\n",
19
+
"\n",
20
+
"* 0: case vide\n",
21
+
"* 1: pion blanc\n",
22
+
"* 2: pion noir\n",
23
+
"* 3: dame blanche\n",
24
+
"* 4: dame noir\n",
25
+
"\n",
26
+
"Les valeurs numériques sont toujours plus efficace que des chaînes de caractères. Elles prennent moins de place en mémoire et les opérations sont plus efficaces."
27
+
]
28
+
},
29
+
{
30
+
"cell_type": "code",
31
+
"execution_count": 5,
32
+
"metadata": {},
33
+
"outputs": [
34
+
{
35
+
"name": "stdout",
36
+
"output_type": "stream",
37
+
"text": [
38
+
"[[3 0 0 0 0 0 0 0 0 0]\n",
39
+
" [0 0 0 0 0 0 0 0 0 0]\n",
40
+
" [0 0 0 0 0 0 0 0 0 0]\n",
41
+
" [0 0 0 0 0 0 0 0 0 0]\n",
42
+
" [0 0 0 0 2 0 2 0 0 0]\n",
43
+
" [0 0 0 0 0 0 0 0 0 0]\n",
44
+
" [0 0 0 0 0 0 0 0 0 0]\n",
45
+
" [0 0 0 0 0 0 0 0 0 0]\n",
46
+
" [0 0 0 0 0 0 0 0 0 0]\n",
47
+
" [0 0 0 0 0 0 0 0 0 0]]\n"
48
+
]
49
+
}
50
+
],
51
+
"source": [
52
+
"import numpy as np\n",
53
+
"\n",
54
+
"\n",
55
+
"def damier_exemple(n: int = 10):\n",
56
+
" d = np.zeros(\n",
57
+
" (n, n), dtype=int # il est préférable d'avoir des entiers plutôt que des réels\n",
58
+
" )\n",
59
+
" d[0, 0] = 3\n",
60
+
" d[4, 4] = 2\n",
61
+
" d[4, 6] = 2\n",
62
+
" return d\n",
63
+
"\n",
64
+
"\n",
65
+
"damier = damier_exemple()\n",
66
+
"print(damier)"
67
+
]
68
+
},
69
+
{
70
+
"cell_type": "markdown",
71
+
"metadata": {},
72
+
"source": [
73
+
"On cherche maintenant toutes les dames. On retourne une liste de position. Il n'est pas utile de retourner ce que contient chaque case. On peut retrouver cette information avec le damier."
"Et maintenant, le plat principal, une fonction retourne les possibles prises pour une dame. L'idée est de regarder dans une direction, de chercher un pion ou une dame de couleur différente et une autre case derrière, et plus précisément, la dernière case où la dame peut se poser. La fonction retourne deux positions : ``[(i1, j1), (i2, j2)]``. La première position est le pion ou la dame à prendre. La dame peut alors se poser dans l'intervalle entre ces deux positions, la première exlue.\n",
111
+
"\n",
112
+
"Comme cet algorithme est le même quelle que soit la direction, nous allons créer deux fonctions, une pour traiter une direction, l'autre pour les quatre."
0 commit comments