Überprüfen Sie, ob Sudoku-Lösung gültig ist
Ihnen gegeben, eine Lösung für ein Sudoku-puzzle. Schreiben Sie den code, um zu überprüfen, ob es eine gültige Lösung.
Ihre Funktion Unterschrift sollte sein:
boolean isValid(int starti, int startj, int endi, int endj)
Regeln für diejenigen, die nicht mit Sudoku:
- Grid-Größe ist 9x9, unterteilt in 9 Regionen von 3x3
- Jede Zeile enthält alle Ziffern von 1-9
- Jede Spalte muss alle Ziffern von 1-9
- Jedes 3x3-Quadrat muss alle Ziffern von 1-9
Ich wurde nicht gefragt, diese Frage, aber es sah auf mehrere Orte. Die überprüfung der letzten Regel könnte der interessante Teil
Es riecht immer noch wie Hausaufgaben.
Was hast du schon so weit..?
es sei denn, das gesamte Netz der region wird erwartet, dass diese Funktion der Signatur, erscheint mir falsch. Ein 9x9 sudoku-matrix als parameter würde besser sein.
f.y.ich für andere Leser, dies war mit von glassdoor interview-Frage für google
Was hast du schon so weit..?
es sei denn, das gesamte Netz der region wird erwartet, dass diese Funktion der Signatur, erscheint mir falsch. Ein 9x9 sudoku-matrix als parameter würde besser sein.
f.y.ich für andere Leser, dies war mit von glassdoor interview-Frage für google
InformationsquelleAutor Sarp Centel | 2011-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
das ist eine brute-force-Algorithmus, der ziemlich wörtlich folgt die sudoku-Regel festgelegt. Zuerst prüft, ob jede Zeile enthält genau 9 verschiedene zahlen mit
std::bitset
(std::bitset.count
gibt die Anzahl der gesetzten bits). Dann prüft es, jede Spalte und jeder block in der gleichen Weise.InformationsquelleAutor Fred Foo
Sorry, ich weiß, das muss Hausaufgaben machen, aber ich kann mir nicht helfen. Es ist einfach zu viel Spaß, um sich etwas einfallen 🙂
Einen Löffel voll von LINQ lässt die Medizin unten gehen:
Das schöne an dieser Lösung ist, dass kein Lehrer wird glauben, dass Sie, wenn Sie sagen, Sie kam mit dieser 😉
Haha.. ich dachte das gleiche. Ich schon geändert 🙂
Ausgezeichnet! Ich würde lieben zu sehen, den Blick auf die Lehrer konfrontiert, wenn er die Beweis-dies liest O_o 🙂
Durch das speichern der Ergebnisse der Plausibilitätsprüfungen in der Variablen, die Sie verpassen die Gelegenheit zu einem Kurzschluss der Gültigkeit überprüfen. Wenn einige Zeile ungültig ist, müssen Sie nicht überprüfen Sie die Spalten und Quadrate.
InformationsquelleAutor Steven
SQL erlaubt die Definition der Regeln als CONSTRAINTS: ungültige puzzels sind verboten und nicht existieren kann.
Nun, die ->val-Mitglieder können aktualisiert werden, aber die daraus resultierende Tabelle kann nie gegen eine der vier Randbedingungen (drei sind eigentlich INDIZES, aber das ist hier unwichtig).
Prüfung für eine vollständig gültige gefüllt-in der Tabelle bedeutet: die überprüfung, ob es sind 81 nicht-NULL-Einträge:
Dies ist das verrückteste und dennoch coolste Lösung, die ich je gelesen habe! Wer würde auch nur daran denken, die mithilfe von SQL-Einschränkungen für dieses problem!!! Ich Grüße Sie!
InformationsquelleAutor wildplasser
Einer Java-Implementierung mit bit-Sätze:
InformationsquelleAutor zc22
Wäre dies meine Lösung in ruby
InformationsquelleAutor parolkar
die Lösung, die mit nur einer array-iteration.
durch die gesamte iteration von Arrays, posRec array haben die einzelnen zahlen Verfügbarkeit in ROW/COL/RASTER.
wenn es ist fehlt etwas in posRec, können wir sagen, dass sudoku ist nicht korrekt.
InformationsquelleAutor byenga
So ein soduku gelöst board enthält genau 9 jede Zahl von 1 bis 9. Diese prüft.
aber ein sudoku-Brett mit genau 9 jede Zahl von 1 bis 9 ist nicht unbedingt ein gültiges sudoku gelöst. Könnte es haben 9 Zeilen von 123456789, zum Beispiel.
InformationsquelleAutor Bhawna
In Bezug auf die ausgezeichnete Antwort von @Stephan, hier ist eine Lösung in C# ohne Rückgriff auf LINQ zu zeigen, den Unterschied zwischen den beiden Ansätzen.
Diese Lösung verarbeitet sowohl 4x4-und 9x9-Sodoku-boards.
InformationsquelleAutor Contango
Hatte ich eine ähnliche Aufgabe, Eingabe aus der Standardeingabe.
Ich verwendet, setzt.
Setzen Sie das element auf der rechten Zeile, Spalte und Quadrat ("box-in meinem code).
Wenn alle 3 set-Größe ist 9, es ist gültig.
}
InformationsquelleAutor otisonoza
Dachte ich, meine Lösung war knapp, aber anscheinend ist das so, wenn jeder andere ist. Anyways, ich denke, das ist eine ganz klare und einfache Antwort Lesen Sie in Rubin habe ich für ein interview-Frage auf 7/11/2014:
InformationsquelleAutor bhan
Den Zeilen und Spalten werden kann, validiert in einer einzelnen Schleife
}
sum = 45
Arbeit? Was ist, wenn eine Spalte hat37, 1, 1, 1, 1, 1, 1, 1, 1
? Ihre Logik ist auch fehlerhaft - wenn die erste Zeile richtig istsuccessTillNow
wirdtrue
- wenn die zweite Zeile ist falsch, es liefert den aktuellen Wert vonsuccessTillNow
die auch nochtrue
!Hi Stanley.. ich änderte den code wie pro Ihre Kommentare . Bitte überprüfen Sie und entfernen Sie die negative Markierung, wenn Sie finden, ich habe gearbeitet und platziert die richtige Lösung jetzt.
Ich sah so viele Lösungen gefragt, warum jemand nicht nutzen, zu überprüfen, ob die Summe ist 45 in jedes Quadrat. Und es kann leicht verallgemeinert zu einer ungeraden soduku puzzle.
InformationsquelleAutor vijayinani