Schrift
[thread]8815[/thread]

Rätsel der Woche 2007/6: Viel Spaß beim halbdutzendsten RDW in 07 (Seite 2)

Leser: 2


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
murphy
 2007-03-07 16:37
#74834 #74834
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ich hätte halt CPAN:B::Deparse vorgeschlagen. Außerdem ist es gemein, dass Du die Minimallösung ausgeschlossen hast -- da hätte ich endlch mal beim Golfen eine Chance gehabt ;-)\n\n

<!--EDIT|murphy|1173278575-->
When C++ is your hammer, every problem looks like your thumb.
Ishka
 2007-03-07 17:22
#74835 #74835
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich hab sogar an dich gedacht, als ich schrieb, daß das Programm mehr als 0 Zeichen enthalten muß ;)

Du kannst gerne B::Deparse verwenden -- in gewissem Sinne ist das sogar kreativ. Auch, wenn man natürlich ganz ohne solche Scherze auskommt ;)
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}
Taulmarill
 2007-03-07 17:30
#74836 #74836
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
B::Deparse geht nicht, denn:
Quote
The output of B::Deparse won't be exactly the same as the original source

Leider funktioniert die Lösung, die ich im Kopf hatte auch nicht so, wie ich das dachte.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Ishka
 2007-03-07 17:34
#74837 #74837
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=Taulmarill,07.03.2007, 16:30]B::Deparse geht nicht, denn:
Quote
The output of B::Deparse won't be exactly the same as the original source

Leider funktioniert die Lösung, die ich im Kopf hatte auch nicht so, wie ich das dachte.[/quote]
geht trotzdem (aber ich verrat natürlich jetzt nicht, wie) :)

Nur Mut, du schaffst schon was :)
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}
murphy
 2007-03-07 18:40
#74838 #74838
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ui, ich habe eine Lösung mit nur 55 Zeichen gefunden!
When C++ is your hammer, every problem looks like your thumb.
Ishka
 2007-03-07 19:34
#74839 #74839
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Mein aktueller Rekord liegt bei 32 :)
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}
docsnyder
 2007-03-08 10:07
#74840 #74840
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallöle!

Ich finde die RDW-Aktion total klasse: zu einem Problem, zu dem man sich Gedanken macht, kann man verschiedene andere Lösungen inspizieren und davon lernen.

Zum Thema lernen: In meiner Lösung scheint in gewissen Testfällen der Fehler "Deep recursion" aufzutreten und ich verstehe nicht warum. So "deep" ist die Rekursion doch garnicht (max. Anzahl freie äußere Felder + 1).

Versteht das jemand?

Gruss, Doc
betterworld
 2007-03-08 15:16
#74841 #74841
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=docsnyder,08.03.2007, 09:07]Zum Thema lernen: In meiner Lösung scheint in gewissen Testfällen der Fehler "Deep recursion" aufzutreten und ich verstehe nicht warum. So "deep" ist die Rekursion doch garnicht (max. Anzahl freie äußere Felder + 1).

Versteht das jemand?

Gruss, Doc[/quote]
Das muesste doch jetzt eigentlich in den RDW5-Thread? Wie auch immer: Diese Warnung kommt laut perldiag, sobald eine Subroutine sich mehr als 100 mal selbst aufruft. Es ist nicht Schlimmes, sondern eben nur eine Warnung, und wenn der Programmierer weiss, dass er eigentlich keine Rekursion geplant hat, ist es ein guter Hinweis, dass er lieber Ctrl-C druecken sollte, bevor sein RAM voll ist.

Denk Dir nichts, mein Programm gibt die Warnung schließlich auch aus ;-)
Ishka
 2007-03-08 17:18
#74842 #74842
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Gemäg der Einstimmigkeit im Thread ,,Häufigkeit der RDWs'' wird die Abgabefrist mal mindestens bis zum 14.3. verlängert.
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}
Ishka
 2007-03-16 06:05
#74843 #74843
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich hab die Auswertung jetzt fertig gemacht und wieder ins Wiki:Wiki gestellt.
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}
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2007-03-06 18:52.