API LaTeX et PSTricks

LogicoGrilles — récupérer des grilles et leur solution, prêtes à coller dans un document.

← Retour au catalogue des jeux

Principe

Une requête GET ou POST renvoie une ou plusieurs grilles d'un jeu, avec leur solution, sous forme de code LaTeX (environnement picture, aucun paquet nécessaire) ou PSTricks (environnement pspicture). Les grilles sont celles des générateurs du site : solution unique et résolution par pure logique.

L'adresse de base est , suivie du nom du jeu.

Jeux disponibles

JeuAdresse (<jeu>)Tailles size et difficultés diff

Par défaut, la taille et la difficulté sont celles proposées par la page du jeu. Un couple taille / difficulté qui n'existe pas renvoie une erreur 400 qui liste les valeurs possibles.

Paramètres

En GET, dans l'adresse (?size=6&diff=facile). En POST, dans un corps JSON avec l'en-tête Content-Type: application/json. Les noms sont les mêmes.

ParamètreValeursDéfaut
sizetaille de la grille (selon le jeu)celle de la page du jeu
diffdifficulté (selon le jeu et la taille)celle de la page du jeu
nnombre de grilles, de 1 à 101
seedtexte de 100 caractères au plus, pour rejouer une grilletirée au hasard
formatlatex ou pstrickslatex
solution1 pour joindre la grille corrigée, 0 sinon1
raw1 : renvoyer le code seul, en texte brut0

Avec n supérieur à 1 et une seed donnée, la grille i (à partir de 0) a pour graine seed:i : redemander seed=ma-graine:1 avec n=1 redonne exactement la deuxième grille du lot.

Réponse

{
  "game": "binero",
  "format": "latex",
  "grids": [
    {
      "seed": "api:1760860000000:k3x9qa:0",
      "size": 8,
      "diff": "moyen",
      "givens": 21,
      "puzzle":   "\\setlength{\\unitlength}{8mm}\n\\begin{picture}(8,8)…",
      "solution": "\\setlength{\\unitlength}{8mm}\n\\begin{picture}(8,8)…"
    }
  ]
}

puzzle est l'énoncé (les nombres ou indices donnés), solution la grille corrigée (absente avec solution=0), givens le nombre de données de l'énoncé. La seed utilisée est toujours renvoyée.

Avec raw=1, la réponse est du texte brut : pour chaque grille, l'énoncé puis la solution, séparés par une ligne vide.

Erreurs et limites

CodeSignification
400paramètre invalide, couple taille / difficulté inexistant, JSON invalide ou mauvais Content-Type
404jeu inconnu
405méthode autre que GET, POST ou OPTIONS
413corps de la requête de plus de 10 Ko
429plus de 30 grilles par minute depuis la même adresse (en-tête Retry-After en secondes)
503génération échouée (rare, surtout sur les plus grandes grilles très difficiles) : réessayer, ou changer de seed

Chaque erreur est un JSON {"error": "…"}. Une grille est générée en une fraction de seconde à quelques secondes selon le jeu : demande-en peu à la fois.

L'adresse IP n'est utilisée que pour limiter le débit, en mémoire du serveur ; l'API ne stocke ni les requêtes ni les grilles demandées. L'hébergeur peut en revanche tenir des journaux d'accès techniques, comme pour tout site (voir les mentions légales).

Exemples

Ligne de commande

curl 'https://api.logicogrilles.mathsmentales.net/api/binero?size=6&diff=facile&n=2&raw=1'

JavaScript (navigateur)

const r = await fetch('https://api.logicogrilles.mathsmentales.net/api/sudoku', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({size: 9, diff: 'facile', n: 3, format: 'pstricks'})
});
const {grids} = await r.json();
console.log(grids[0].puzzle, grids[0].solution);

Document LaTeX

Coller le champ puzzle (ou solution) tel quel ; il commence par un \setlength{\unitlength}{…}, que l'on peut isoler dans un groupe.

\documentclass{article}
\begin{document}
\begin{center}
  % code renvoyé par l'API avec format=latex
\end{center}
\end{document}

À compiler avec pdflatex.

Document PSTricks

\documentclass{article}
\usepackage{pstricks}
\begin{document}
\begin{center}
  % code renvoyé par l'API avec format=pstricks
\end{center}
\end{document}

À compiler avec latex, puis dvips et ps2pdf (ou xelatex avec le paquet pst-pdf selon ta distribution).

Essayer

Choisis un jeu et des options, puis génère : la page appelle l'API en ligne et affiche le code à copier.