From 4d9903cd7640326cc6e66b13b92d29bec0951dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ama=C3=ABl=20Kesteman?= Date: Tue, 18 Nov 2025 18:45:30 +0100 Subject: [PATCH] =?UTF-8?q?1ere=20fonction=20peuplement=20redis=20(=20?= =?UTF-8?q?=C3=A0=20corriger)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Main.ipynb | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 97 insertions(+), 2 deletions(-) diff --git a/Main.ipynb b/Main.ipynb index ad2c939..349c799 100644 --- a/Main.ipynb +++ b/Main.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "id": "78fdf40a", "metadata": {}, "outputs": [], @@ -24,7 +24,10 @@ "\n", "import redis\n", "import time\n", - "import chess\n" + "import chess\n", + "import chess.syzygy\n", + "import random\n", + "from IPython.display import display\n" ] }, { @@ -108,6 +111,98 @@ "if __name__ == \"__main__\":\n", " do_this()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e6058974", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "
. . . . k . . .\n",
+       ". . . . . . . .\n",
+       ". . . n . . . .\n",
+       ". . . . . . . .\n",
+       ". . . . . . . p\n",
+       ". P . . . . . .\n",
+       ". . . . B . . .\n",
+       ". . . . K . . .
" + ], + "text/plain": [ + "Board('4k3/8/3n4/8/7p/1P6/4B3/4K3 b - - 0 1')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Récupération des positions de la tablebase KBNvK\n", + "Récupération des positions de la tablebase KPvK\n", + "Récupération des positions de la tablebase KPvKP\n", + "Récupération des positions de la tablebase KQvK\n", + "Récupération des positions de la tablebase KQvKP\n", + "Récupération des positions de la tablebase KRBvKP\n", + "Récupération des positions de la tablebase KRPvKP\n", + "Récupération des positions de la tablebase KRvK\n", + "Récupération des positions de la tablebase KRvKB\n", + "Total positions récupérées: 0\n", + "Ajoute de toutes les positions des tablebases dans Redis terminé!\n" + ] + } + ], + "source": [ + "def get_250_random_position(tablebases,max_moves = 20):\n", + " '''récupère 250 positions aléatoires de chaque table base'''\n", + " positions = []\n", + " attempts = 0\n", + " max_attempts = 1000 #Pour éviter les boucles infinies\n", + " while len(positions) < 250 and attempts < max_attempts:\n", + " board = chess.Board() #LIGNE A CHANGER\n", + " try:\n", + " if tablebases.probe_wdl(board) is not None:\n", + " positions.append(board) #Ajout de la position à la liste si elle est dans la tablebase\n", + " except KeyError:\n", + " pass\n", + " attempts += 1 \n", + " \n", + " \n", + " return positions \n", + "\n", + "def add_tabblebase_to_redis():\n", + " #Connect to Redis server\n", + " redis_server = redis.Redis(host='localhost', port=6379, db=0)\n", + " \n", + " tablebases_path = \"tablebases/\" #Chemin vers les tables bases Syzygy\n", + " \n", + " tablebases = chess.syzygy.open_tablebase(tablebases_path)\n", + " position = chess.Board(\"4k3/8/3n4/8/7p/1P6/4B3/4K3 b - - 0 1\") #Position d'exemple\n", + " display(position) \n", + " \n", + " configs = [\"KBNvK\",\"KPvK\",\"KPvKP\",\"KQvK\",\"KQvKP\",\"KRBvKP\",\"KRPvKP\",\"KRvK\",\"KRvKB\"]\n", + " #Configurations de toute les tablebases que l'on utilisera dans le projet.\n", + " all_positions = []\n", + " for config in configs:\n", + " print(f\"Récupération des positions de la tablebase {config}\")\n", + " position = get_250_random_position(tablebases,max_moves=20)\n", + " all_positions.extend(position) #Ajout des positions générées à la liste globale\n", + " \n", + " print(f\"Total positions récupérées: {len(all_positions)}\")\n", + " for position in all_positions:\n", + " fen = position.fen()\n", + " wdl = tablebases.probe_wdl(position)\n", + " dtz = tablebases.probe_dtz(position)\n", + " redis_server.hset(fen, mapping={\"wdl\": wdl, \"dtz\": dtz}) \n", + " \n", + " print(\"Ajoute de toutes les positions des tablebases dans Redis terminé!\")\n", + "\n", + "if __name__ == \"__main__\":\n", + " add_tabblebase_to_redis() " + ] } ], "metadata": {