Hallo!
Ich richte einen kleinen Wettbewerb aus: gesucht ist ein Programm, dass SuDoKu-Rätsel lösen kann.
An das Programm werden die folgenden Bedingungen gestellt:
1.
Das Programm muss in einer der folgenden Sprachen programmiert sein:
- ANSI C
- ANSI C++
- PHP
- Java
Die maximale Portabilität ist vorausgesetzt! Das Programm wird als Quellcode abgegeben und muss auf jeden beliebigen System compilierbar bzw. interpretierbar sein, für das genormte Compiler bzw. Interpreter zur Verfügung stehen (Linux, MacOS, Windows....)
2.
Das Rätsel liegt in Form einer Textdatei vor, die einzelnen Zellen sind durch Leerzeichen , bzw Zeilenumbrüche getrennt. Leere Zellen, d.h. Zellen, in denen die Lösungszahl zu suchen ist, wird duch eine Null gekennzeichnet.
Beispiel:
1 0 0 3 4 5 0 0 2
2 3 0 7 0 0 8 0 0
....
Die Datei muss entweder über eine Programmfunktionalität oder über eine einfache Umleitung auf das stdin eingelesen werden können. Voraussetzung ist eine variable Handhabung des Programmes über die Kommandozeile bzw. Unix-shell
Beispiel
proggi.exe raetsel.txt (Das Programm liest selbst ein)
proggi.exe < raetsel.txt (Einlesen über stdin)
Außerdem muss das Programm erkennen können, ob auf die einzelnen Felder gültige Werte (0-9) gesetzt wurden, und ggf. mit einer Fehlermeldung abbrechen.
3. Das Programm muss die Lösung des Rätsels auf der Konsole (stdout) ausgeben können
4. Das Programm muss die genaue Zeit messen können, die der Lösungsalgorithmus benötigt hat. Diese muss in Sekunden auf zwei Nachkommastellen genau auf der Console ausgegeben werden. Die Zeitmessung sollte sich lediglich auf die Ausführung des Lösungsalgorithmus beschränken. Die Zeit für das Einlesen der Eingabedatei sollte nicht gemessen werden.
5. Das Programm muss feststellen können, ob ein Rätsel lösbar ist, oder nicht und dem entsprechend eine Meldung auf der Konsole ausgeben können.
6. Der Abschluss des Programmes muss in Form eines Exitcodes an das ausführende Umgebungssystem zurückgeliefert werden
0: Das Rätsel wurde gelöst
1: Das Rätsel ist nicht lösbar
2: In der Eingabedatei gibt es einen Fehler
7. Der Quellcode muss vollständig kommentiert und der Algorithmus im Quellcode ausreichend beschrieben werden. Gebt euren Namen, und eure Emailadresse im Quellcode in Form eines Kommentars an.
Der Gewinner des Wettbewerbes ist der Teilnehmer, der fristgerecht ein Programm einreicht, das den obigen Voraussetzungen entspricht und unter allen Teilnehmern ein Rätsel am schnellsten lösen kann. Hierfür wird jedem Programm zehn unterschiedliche Rätsel zum Lösen gegeben. Die Rätsel, sowie der ausführende PC sind bei jedem Teilnehmer identisch. Sollte ein Programm bei einem lösbaren Rätsel keine Lösung liefern können, oder eine Lösung offensichtlich falsch sein, wird der Teilnehmer disqualifiziert.
Zu Gewinnen gibt es den Ruhm und die Ehre, das schnellste Programm unter allen Einsendern geschrieben zu haben :-). Die, nach der benötigten Ausführungszeit des Programmes sortierte, Rangliste mit den Namen aller Teilnehmer wird nach der Auswertung an jede Emailadresse geschickt.
Einsendeschluss ist der 16. Juli um 0:00 Uhr! Schickt den vollständig kommentierten Quellcode des Programmes an
tomsoft@gmx.net
Viel Spaß beim Coden und ich hoffe, dass sich ein paar Teilnehmer zu dem Spaß hinreißen lassen :-)