Codingame minimax exercise
Loading...
Searching...
No Matches
Documentation du projet Codingame - Le labyrinthe

Introduction

Le projet est constitué de 2 fichiers principaux :

  • code.c : contient le code du projet pour résoudre le challenge
  • fake_io.c : contient les fonctions de lecture et d'écriture pour simuler les entrées/sorties du programme et ainsi pouvoir tester le code.

Le fichier de tests permet aussi de tester le code du projet avec valgrind et ddd.

Compilation

Pour compiler le projet avec le fichier de tests, utilisez la commande suivante :

gcc -Wall -Wextra -Wpedantic -o code code.c fake_io.c --include fake_io.h

Exécution

Téléchargement des fichiers de test

Vous pouvez télécharger les fichiers de test à partir du fichier Org Mode ou du script en Python suivant qui nécessite le module requests:

import requests
import os
URL = "https://www.codingame.com/training/hard/the-labyrinth"
tests_dir = "tests"
puzzle_id = URL.split("/")[-1]
r = requests.post(
"https://www.codingame.com/services/Puzzle/generateSessionFromPuzzlePrettyId",
json=[None, puzzle_id, False],
)
session_id = r.json()["handle"]
r = requests.post(
"https://www.codingame.com/services/TestSession/startTestSession", json=[session_id]
)
data = r.json()
puzzle_level = data["puzzle"]["level"]
puzzle_url = f"https://www.codingame.com/training/{puzzle_level}/{puzzle_id}"
if not os.path.exists(tests_dir):
os.makedirs(tests_dir)
puzzle_tests = data["currentQuestion"]["question"]["testCases"]
for test in puzzle_tests:
index = test["index"]
label = test["label"]
inputBinaryId = test["inputBinaryId"]
print(f"Test {index}: {label}")
r = requests.get(
"https://static.codingame.com/servlet/fileservlet", params={"id": inputBinaryId}
)
input_file = r.text
with open(f"{tests_dir}/input{index}.txt", "w") as f:
f.write(input_file)
print("Done !")

Exécution du programme

Pour exécuter le programme, téléchargez les fichiers de tests et exécutez la commande suivante :

./code tests/input1.txt

Exécution du programme avec valgrind

valgrind --leak-check=full ./code tests/input1.txt