Sudoku prüfen: Konflikte in Zeilen, Spalten und Blöcken
Schon eine einzige doppelte Ziffer kann eine Sudoku-Stellung ungültig machen, lange bevor der Fehler auffällt.
Im Browser ausführen – kostenlos
Dieses Werkzeug untersucht ein vollständiges oder teilweise ausgefülltes Standardraster und nennt jede belegte Zelle, die an einem unmittelbaren Konflikt beteiligt ist. Zeilen, Spalten und 3x3-Blöcke werden getrennt geprüft, Leerzellen ignoriert und eindeutige Koordinaten samt Ursache ausgegeben. Das Rätsel wird weder gelöst noch um fehlende Werte ergänzt. Daher eignet sich die Prüfung zum Üben, Erstellen, Unterrichten und zur automatischen Datenkontrolle.
Formatieren Sie das Raster vor der Prüfung
Geben Sie ein Standard-Sudoku als neun Zeilen mit jeweils neun Zellen ein. Belegte Zellen müssen Ziffern von 1 bis 9 enthalten. Eine leere Zelle kennzeichnen Sie mit einem Punkt oder einer Null; beide Schreibweisen haben dieselbe Bedeutung und werden bei der Duplikatsuche nicht berücksichtigt. Zur besseren Lesbarkeit dürfen Sie Zellen durch Leerzeichen, Kommas oder senkrechte Striche trennen. Damit werden sowohl kompakte als auch optisch getrennte Schreibweisen akzeptiert. Das Werkzeug entfernt diese Trennzeichen, errät oder korrigiert jedoch keine anderen Zeichen. So bleibt eine fehlerhaft formatierte Eingabe klar von einem korrekt aufgebauten Raster getrennt, das Sudoku-Regeln verletzt. Die Anfrage liefert einen Eingabefehler, wenn nicht genau neun Zeilen vorhanden sind, eine Zeile nach dem Entfernen der Trenner nicht neun Zellen enthält oder ein unzulässiges Zeichen vorkommt. Teilweise ausgefüllte Raster sind ausdrücklich erlaubt, von den Ausgangshinweisen über einen laufenden Spielstand bis zum fast fertigen Sudoku. Ein vollständig leeres Raster ist strukturell gültig, weil keine belegten Zellen kollidieren können. Geprüft wird nur die übermittelte Stellung; Lücken werden niemals gefüllt und Werte nicht verändert.
Lesen Sie den Konfliktbericht zellenweise
Das Ergebnis beginnt mit dem booleschen Wert <code>valid</code>. Er ist wahr, wenn keine belegte Zelle dieselbe Ziffer wie eine andere Zelle in ihrer Zeile, Spalte oder ihrem 3x3-Block enthält. <code>filled_cells</code> gibt an, wie viele nicht leere Einträge untersucht wurden. Bei einer ungültigen Stellung listet <code>conflict_cells</code> sämtliche betroffenen Zellen mit einsbasierten Zeilen- und Spaltenkoordinaten, der enthaltenen Ziffer sowie einem oder mehreren Gründen auf. Jeder Grund nennt die Regelart, den einsbasierten Einheitsindex und den doppelten Wert. Eine Zelle kann mehrere Ursachen besitzen: Eine doppelte Fünf kann beispielsweise zugleich gegen ihre Zeile und den linken oberen Block verstoßen. Beide Angaben bleiben erhalten. Dadurch kann eine Oberfläche jede problematische Stelle direkt hervorheben, ohne Gruppen nachträglich zusammenzusetzen. Die Ausgabe ist deterministisch: Zellen erscheinen in Leserichtung, Gründe in der Reihenfolge Zeile, Spalte und Block. Leerzellen werden nie aufgeführt. Kommt dieselbe Ziffer dreimal in einer Einheit vor, werden alle drei Stellen markiert und nicht nur ein beliebig gewähltes Paar.
Verstehen Sie die Aussagekraft der Gültigkeit
Diese Prüfung beantwortet eine eng umrissene Frage: Verletzt die aktuelle Stellung unmittelbar die Eindeutigkeitsregel einer Zeile, Spalte oder eines Blocks? Ein gültiges Ergebnis beweist nicht, dass das Rätsel lösbar ist, genau eine Lösung besitzt oder sinnvoll entworfene Hinweise enthält. Manche Stellungen haben keine direkten Duplikate und können trotzdem nicht vervollständigt werden, weil frühere Entscheidungen alle Kandidaten einer späteren Zelle ausschließen. Dafür wäre ein Solver oder eine tiefere Machbarkeitsanalyse erforderlich; beides gehört bewusst nicht zu dieser Fähigkeit. Der begrenzte Umfang ist nützlich, wenn Rückmeldungen Fehler zeigen sollen, ohne eine Lösung preiszugeben. Eine Lernanwendung kann doppelte Zellen markieren, ein Rätsel-Editor Hinweise nach jeder Änderung prüfen und ein Importprozess beschädigte Datensätze vor aufwendiger Verarbeitung abweisen. Die Berechnung durchsucht höchstens 81 Zellen und nutzt weder Netzwerk noch Zufall, Uhrzeit oder externen Zustand. Gleiche Eingaben erzeugen daher stets dieselbe strukturierte Ausgabe. Im Browser läuft dieselbe reine Logik lokal; automatisierte Abläufe können die API für $0.002 je Element aufrufen und Konfliktkoordinaten zur späteren Prüfung speichern.
Anwendungsfälle
Prüfen Sie einen laufenden Spielstand
Finden Sie doppelte Einträge in einem Teilraster, ohne von einem Solver fehlende Ziffern anzeigen zu lassen.
Kontrollieren Sie Sudoku-Hinweise
Validieren Sie ein neu erfasstes Raster und markieren Sie jede an einem unmittelbaren Regelverstoß beteiligte Zelle.
Sichern Sie einen Importprozess ab
Trennen Sie fehlerhaft formatierten Text von korrekt aufgebauten, aber widersprüchlichen Sudoku-Datensätzen.
Häufige Fragen
Kann ich ein unfertiges Sudoku prüfen?
Ja. Verwenden Sie für jede leere Zelle einen Punkt oder eine Null. Leerzellen werden bei der Duplikatsuche ignoriert.
Bedeutet gültig, dass das Sudoku lösbar ist?
Nein. Es bedeutet nur, dass aktuelle Einträge keine Zeilen-, Spalten- oder Blockduplikate bilden. Lösbarkeit und Eindeutigkeit werden nicht bewiesen.
Warum kann eine Zelle mehrere Konfliktgründe haben?
Derselbe Eintrag kann gleichzeitig eine Ziffer in seiner Zeile, Spalte und seinem Block duplizieren. Jede verletzte Regel wird einzeln gemeldet.
Beginnen die Koordinaten bei null?
Nein. Zeilen, Spalten und Einheitsindizes beginnen bei 1 und entsprechen damit der üblichen menschlichen Sudoku-Beschreibung.
Was kostet eine Prüfung über die API?
Jedes über die API verarbeitete Element kostet $0.002. Die interaktive Browserprüfung kann kostenlos lokal ausgeführt werden.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"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"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.game_sudoku_validity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |