Vérifier un sudoku : conflits de lignes, colonnes et blocs
Un seul chiffre répété peut rendre une position de sudoku incorrecte bien avant que l’erreur soit visible.
Lancer gratuitement
Ce vérificateur examine une grille standard remplie ou partielle et identifie chaque case occupée impliquée dans un conflit immédiat. Il contrôle séparément les lignes, les colonnes et les blocs 3x3, ignore les cases vides et renvoie des coordonnées stables avec la cause de chaque signalement. Il ne résout pas la grille et ne révèle aucune valeur manquante, ce qui convient à l’entraînement, à l’édition, à l’enseignement et à la validation automatisée.
Formatez la grille avant de la vérifier
Saisissez une grille de sudoku standard sous forme de neuf lignes de neuf cases. Les cases remplies doivent contenir les chiffres de 1 à 9. Représentez une case vide par un point ou un zéro : ces deux notations ont le même sens et ne participent pas à la recherche de doublons. Vous pouvez séparer les cases par des espaces, des virgules ou des barres verticales afin de faciliter la lecture. Les écritures compactes et espacées sont donc acceptées. Le vérificateur retire ces séparateurs, mais ne devine ni ne corrige aucun autre caractère. Cette règle distingue une saisie mal formée d’une grille correctement structurée qui enfreint les règles du sudoku. La requête renvoie une erreur si elle ne contient pas exactement neuf lignes, si une ligne n’a pas neuf cases après retrait des séparateurs ou si un caractère non admis apparaît. Les grilles partielles sont acceptées, qu’elles ne contiennent que les indices initiaux, une partie en cours ou un plateau presque terminé. Une grille entièrement vide est valide, car aucune case occupée ne peut entrer en conflit. L’outil évalue uniquement la position fournie, sans compléter ni modifier les valeurs.
Lisez le rapport de conflits case par case
Le résultat commence par la valeur booléenne <code>valid</code>. Elle vaut vrai lorsqu’aucune case occupée ne partage son chiffre avec une autre case de la même ligne, colonne ou du même bloc 3x3. Le compteur <code>filled_cells</code> indique le nombre d’entrées non vides examinées. Si la position est incorrecte, <code>conflict_cells</code> répertorie toutes les cases concernées avec leurs coordonnées de ligne et de colonne commençant à un, le chiffre présent et un ou plusieurs motifs. Chaque motif précise le type de règle, l’indice de l’unité et la valeur répétée. Une case peut avoir plusieurs motifs : un cinq répété peut enfreindre à la fois sa ligne et le bloc supérieur gauche, et les deux informations restent visibles. Ce détail permet à une interface de surligner directement chaque emplacement problématique. L’ordre est déterministe : les cases suivent l’ordre de lecture, puis les motifs suivent ligne, colonne et bloc. Les cases vides ne figurent jamais dans le rapport. Si un chiffre apparaît trois fois dans une unité, les trois cases sont signalées au lieu d’une paire choisie arbitrairement.
Comprenez ce que la validité permet de conclure
Cette vérification répond à une question précise : la position actuelle enfreint-elle immédiatement la règle d’unicité d’une ligne, d’une colonne ou d’un bloc ? Un résultat valide ne prouve pas que la grille est résoluble, qu’elle possède une solution unique ou que ses indices forment un bon problème. Certaines positions n’ont aucun doublon direct, mais restent impossibles à terminer parce que des choix antérieurs suppriment tous les candidats d’une autre case. Cette analyse exige un solveur ou un contrôle de faisabilité plus approfondi, que cette capacité n’effectue volontairement pas. Cette portée limitée est utile lorsque le retour doit montrer les erreurs sans dévoiler la réponse. Un outil pédagogique peut surligner les doublons, un éditeur peut contrôler les indices après chaque modification et un importateur peut rejeter les données endommagées avant un traitement plus coûteux. Le calcul parcourt au maximum 81 cases et n’utilise ni réseau, ni hasard, ni horloge, ni état externe. Une entrée identique produit donc toujours la même sortie structurée. Le navigateur exécute localement cette logique pure, tandis qu’un processus automatisé peut interroger l’API pour $0.002 par élément et conserver les coordonnées pour révision.
Cas d’usage
Contrôlez une partie en cours
Repérez les chiffres répétés dans une grille partielle sans demander à un solveur de révéler les valeurs manquantes.
Révisez les indices d’un sudoku
Validez une grille nouvellement saisie et surlignez chaque case impliquée dans une infraction immédiate.
Sécurisez un flux d’importation
Séparez les textes mal formés des grilles bien structurées mais conflictuelles avant leur traitement.
Questions fréquentes
Puis-je vérifier un sudoku inachevé ?
Oui. Utilisez un point ou un zéro pour chaque case vide. Les cases vides sont ignorées lors de la recherche des doublons.
Une grille valide est-elle forcément résoluble ?
Non. Cela signifie seulement que les entrées actuelles ne se répètent pas dans une ligne, une colonne ou un bloc. La résolution et l’unicité ne sont pas prouvées.
Pourquoi une case peut-elle avoir plusieurs motifs de conflit ?
Une même entrée peut répéter un chiffre dans sa ligne, sa colonne et son bloc. Chaque règle enfreinte est signalée séparément.
Les coordonnées commencent-elles à zéro ?
Non. Les lignes, colonnes et indices d’unité commencent à 1 afin de correspondre à la description habituelle d’un sudoku.
Quel est le prix d’une vérification par API ?
Chaque élément traité par l’API coûte $0.002. Le vérificateur interactif du navigateur peut fonctionner localement gratuitement.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/hobby/game-sudoku-validity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"grid":"53..7....\n6..195...\n.98....6.\n8...6...3\n4..8.3..1\n7...2...6\n.6....28.\n...419..5\n....8..79"}'const res = await fetch("https://api.kit.forhosting.com/hobby/game-sudoku-validity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"grid": "53..7....\n6..195...\n.98....6.\n8...6...3\n4..8.3..1\n7...2...6\n.6....28.\n...419..5\n....8..79"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/game-sudoku-validity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"grid": "53..7....\n6..195...\n.98....6.\n8...6...3\n4..8.3..1\n7...2...6\n.6....28.\n...419..5\n....8..79"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/game-sudoku-validity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"grid":"53..7....\\n6..195...\\n.98....6.\\n8...6...3\\n4..8.3..1\\n7...2...6\\n.6....28.\\n...419..5\\n....8..79"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"grid":"53..7....\n6..195...\n.98....6.\n8...6...3\n4..8.3..1\n7...2...6\n.6....28.\n...419..5\n....8..79"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/game-sudoku-validity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"grid": "53..7....\n6..195...\n.98....6.\n8...6...3\n4..8.3..1\n7...2...6\n.6....28.\n...419..5\n....8..79"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.game_sudoku_validity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |