Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8753[/thread]

Rätsel der Woche 2007/3: viel Spaß beim Rätseln

Leser: 2


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Ishka
 2007-02-13 00:14
#74274 #74274
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Momentan habe ich 12 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/2 - Raetsel der Woche Nummer 3 des Jahres 2007
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Regeln:
~~~~~~~
       * Bitte nicht vor Ablauf der ersten 72 Stunden (= drei Tage)
         nach Veröffentlichung Hinweise, Spoiler, Lösungen oder
         Lösungsteile posten!

       * Verständnisfragen dürfen selbstverständlich auch vor
         Ablauf der drei 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 drei 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.

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

          stephan <---Punkt---> barth <---At---> gmx <---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 Modul (mit dem Namen Delay), welches die "faule
Auswertung" / "lazy evaluation" von Ausdruecken ermoeglicht. Es
sollte eine Schnittstelle bereitgestellt werden, mit der man Skalare
       erzeugen kann, deren Wert erst bei Bedarf berechnet wird, das
       allerdings nur genau ein mal.

Beispiel:
~~~~~~~~~
       #!/usr/bin/perl -l

       use strict;
       use warnings;

       use Delay;

       my $x = 42;
       my $y = Delay::new { 5 * $x };

       $x = 23;
       print $y; # Gibt 115 aus, nicht 210, denn der Wert von $y wird
                 # erst hier berechnet.

       $x = 1;
       print $y; # Gibt wieder 115 aus, nicht 5, denn der Wert von $y
                 # wurde bereits bestimmt.
\n\n

<!--EDIT|Ishka|1171320039-->
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}
pq
 2007-02-13 13:12
#74275 #74275
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich hab das mal gegolft, bin bei 87 zeichen...

edit: die '1; ' am ende habe ich nicht mitgezählt\n\n

<!--EDIT|pq|1171365234-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
esskar
 2007-02-13 14:29
#74276 #74276
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=pq,13.02.2007, 12:12]ich hab das mal gegolft, bin bei 87 zeichen...

edit: die '1; ' am ende habe ich nicht mitgezählt[/quote]
ggf, kann der '; ' ja weg
pq
 2007-02-13 15:30
#74277 #74277
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
gut, dann 89 zeichen mit letzten zeilenumbruch =)

edit: mittlerweile doch 87\n\n

<!--EDIT|pq|1171373975-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
murphy
 2007-02-13 17:17
#74278 #74278
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Das halte ich irgendwie für unrealistisch kurz. Alleine die absolut notwendigen Codeteile um nicht die Funktionalität, sondern nur das Interface, wie es die Aufgabe fordert, bereitzustellen brauchen etwa 90 Zeichen -- es sei denn man beschränkt sich darauf, dass die erzeugten "Skalare" nur numerische Werte haben können, oder ähnliches.
When C++ is your hammer, every problem looks like your thumb.
pq
 2007-02-13 18:42
#74279 #74279
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ok, ich hab mich etwas vertan - wenn das ergebnis des ausdrucks 0 ist,
wird er nochmals evaluiert. ein klassisches ||= vs. defined-problem.
dadurch werdens ein paar zeichen mehr. ansonsten habe ich
vielleicht auch die aufgabe falsch verstanden. für
die golf-lösung jedenfalls zähle ich nur das modul selbst
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
murphy
 2007-02-13 19:30
#74280 #74280
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,13.02.2007, 16:42][...] ansonsten habe ich vielleicht auch die aufgabe falsch verstanden. [...][/quote]
Glaube ich nicht. Wahrscheinlich bin ich bloß unwissend und staune beim Betrachten der Lösung, wieviel Quelltext man magisch einsparen kann ;-) Beim Golfen bin ich irgendwie nicht besonders gut...
When C++ is your hammer, every problem looks like your thumb.
pq
 2007-02-13 20:11
#74281 #74281
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich hab jetzt 74 zeichen für das modul.

edit: core-module sind hier hoffentlich nicht ausgeschlossen

edit: ich gehe davon aus, dass hier die evaluation nur bei einer stringifizierung
passieren soll.\n\n

<!--EDIT|pq|1171397567-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
betterworld
 2007-02-14 03:43
#74282 #74282
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
73 fuer die ganze Datei incl. "\n"

0 muss nicht gehen, oder?\n\n

<!--EDIT|betterworld|1171417522-->
pq
 2007-02-14 11:16
#74283 #74283
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=betterworld,14.02.2007, 02:43]73 fuer die ganze Datei incl. "\n"

0 muss nicht gehen, oder?[/quote]
was meinst du mit "0 muss nicht gehen"?
und hast du jetzt nur stringifizierung oder mehr?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2007-02-13 00:14.