Schrift
[thread]8858[/thread]

RDW 2007/7: Sudokulöser

Leser: 2


<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
Ishka
 2007-03-21 03:24
#75195 #75195
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Momentan habe ich 14 Aufgaben vorrätig. Vorschläge für neue Rätsel nehme ich immer gerne an (bitte als Mail und als Betreff für Vorschläge rdw-vorschlag enthalten lassen (in klein).

RDW 2007/7 - Raetsel der Woche Nummer 7 des Jahres 2007
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Regeln:
~~~~~~~
       * Bitte nicht vor Ablauf der ersten sieben Tage nach Veröffentlichung
         Hinweise, Spoiler, Lösungen oder Lösungsteile posten!

       * Verständnisfragen dürfen selbstverständlich auch vor Ablauf der
         sieben Tage in diesem Thread gestellt werden. Diskussionen über
         Lösungsansätze gehören aber nicht hierher.

       * Die Verwendung von Modulen ist generell erlaubt, wird jedoch
         das ganze Problem von einem Modul erschlagen, so macht das
         die Lösung langweilig -- und das ist nicht unbedingt der
         Sinn dieser Rätsel.

       * Erst wenn die sieben Tage abgelaufen sind, werden Lösungen in
         das Wiki:Wiki gestellt und hier verlinkt.

       * Sobald die Lösungen veröffentlicht wurden darf hier
         natürlich über sie diskutiert werden.

       * Sofern das Programm Parameter bekommt, diese bitte vollständig,
         sofern nicht explizit anders gefordert, mittels @ARGV auslesen, damit
         die Lösungen besser (und vor allem einfacher) vergleichbar sind.

       * Die Lösungen sollten nicht von jedem Einzelnen gepostet, sondern
         per E-Mail an mich geschickt werden, damit ich sie testen,
         "bewerten" und zusammenfassen kann. Die Adresse dafür lautet:

          ishka <---Minus---> rdw <---At---> kettenbruch <---Punkt---> de

         Im Betreff sollte 'RDW' (also wirklich RDW und nicht Rätsel der
         Woche oder andere Ausformulierungen) und die Nummer des Rätsels
         stehen. Hilfreich wäre neben dem Quelltext der Benutzername
         im Forum sowie Perl- und OS-Version (siehe auch perl -v).


Die Aufgabe:
~~~~~~~~~~~~
         Schreibe ein Programm, das ein gegebenes, unvollständig
         gelöstest, Sudoku-Rätsel vollständig löst, sofern das möglich ist
         und mit einer passenden Warnung abbricht, wenn in der Angabe
         Widersprüche sind. Das zu lösende Sudokurätsel wird dem
         Program als erster Parameter übergeben, als fortlaufender
         String von 81 Zeichen, wobei noch nicht belegte Felder durch
         einen Punkt dargestellt werden. Die 81 Zeichen sind so zu
         verstehen, daß das Sudoku-Quadrat damit Zeilenweise aufgefüllt wird.

         Sudoku-Regeln:
         Sudoku spielt auf einem 9x9-Feld.
         Ein vollständig gelöstes Sudoku-Feld hat in jeder Zeile und jeder
         Spalte jede Ziffer von 1 bis 9 genau einmal. Ferner sind in jedem
         der 9 nicht-überlappenden Teilblöcken von je 3x3 Kästchen
         Größe nochmal jede Ziffer einmal vorhanden.
         In einem ungelösten Sudoku-Rätsel sind noch nicht alle Ziffern
         eingetragen.
         Ziel ist es, alle Ziffern einzutragen, so daß nach den oben
         genannten Regeln keine Widersprüche entstehen.

         Beispiel:
         folgender String
         123456789234567891345678912...........
                                 ...........................................
         stellt folgendes Quadrat dar:
         123456789
         234567891
         345678912
         .........
         .........
         .........
         .........
         .........
         .........

            @ARGV=('1.3..6.89456.89123.891.3456231645.785649.831289.3
                                 126.5312.648976458..2319782.1564' ) ;
         Ausgabe:
         123456789
         456789123
         789123456
         231645978
         564978312
         897312645
         312564897
         645897231
         978231564
\n\n

<!--EDIT|Ishka|1174440814-->
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
renee
 2007-03-21 10:19
#75196 #75196
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich nehme an, es geht nur darum, Zahlensudokus zu lösen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2007-03-21 12:44
#75197 #75197
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ah, super.
da mach ich auch mal mit!
murphy
 2007-03-21 12:52
#75198 #75198
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Hmm, das Problem habe ich schon zweimal gelöst, in Scheme und in Java -- das werde ich jetzt nicht in Perl reimplementieren oder das geforderte Kommandozeileninterface davorschrauben, das ist ja langweilig.
When C++ is your hammer, every problem looks like your thumb.
docsnyder
 2007-03-21 13:03
#75199 #75199
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Supi!

Ei, da mach' ich doch auch mit!

Gruss, Doc
lichtkind
 2007-03-21 14:45
#75200 #75200
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
bruteforce ist ja recht einfach, hm hab ja welber mal sudoku spiel angefangen aber nie weiter als GUI gekommen, wenn hier was gutes bei ist kann ichs ja dann einbauen.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
esskar
 2007-03-21 14:53
#75201 #75201
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich sag nur: färben
docsnyder
 2007-03-21 15:15
#75202 #75202
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@lichtkind

Na, ja, so ganz einfach ist bruteforce auch nicht: bis 9 Schleifen mit einem Laufindex von jeweils 362880 (wenn man das mit Permutationen von 123456789 macht) abgearbeitet sind, werden wir alt sein. Man muss sich schon überlegen, wie man die Geschichte sinnvoll abkürzt.

Gruss, Doc
lichtkind
 2007-03-21 16:17
#75203 #75203
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
das meinte ich grad mir kamen da paar ideen auch miene menschlichen ansätze als algorithmus zu formulieren.

die gui ist unterm baumhaus link
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
docsnyder
 2007-03-22 12:13
#75204 #75204
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
So, meine Lösung ist unterwegs.

Gruss, Doc
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2007-03-21 03:24.