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

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

Leser: 2


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Ishka
 2007-03-06 18:52
#74824 #74824
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Momentan habe ich 11 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/6 - Raetsel der Woche Nummer 6 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 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 mehr als 0 Zeichen enthält, was sich
        selbst wieder ausgibt (dies soll nicht dadurch gelöst werden, daß
        man die Datei ausliest, in der das Programm gespeichert ist).

        Wenn möglich, dann halte den Ausgabecode austauschbar, so
        daß der Programmcode in einer Variablen steht und das print
        durch beliebigen anderen Code ersetzt werden kann (zB. als
        Ausgabe in Ascii-Art, oder in einem Fenster).
\n\n

<!--EDIT|Ishka|1173199990-->
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}
vayu
 2007-03-07 10:03
#74825 #74825
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ok also das kapier ich nicht -.-

das programm soll sich selber ausgeben, soviel ist klar. aber wie austauschbar ... hä?
pq
 2007-03-07 10:42
#74826 #74826
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich kapiers auch nicht
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-03-07 11:19
#74827 #74827
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
man könnte z.b. den output vorgang in eine funktion packen!
vayu
 2007-03-07 11:23
#74828 #74828
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ja gut, aber ob ich jetzt ein print schreibe oder es das print in eine funktion verpacke ist doch jacke wie hose? :)

bin aber wohl eh nicht qualifiziert für diese Aufgabe :=) ich hab nämlich keinen blassen Schimmer wie man eine Datei ausgeben soll ohne die Datei irgendwie vorher auszulesen O.o\n\n

<!--EDIT|vayu|1173260993-->
Ishka
 2007-03-07 12:15
#74829 #74829
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hat die Aufgabe denn irgendwer verstanden? Kann wer auch immer es verstanden hat, mir vielleicht helfen es zu formulieren? Oder hat jemand ne Idee, an welcher Stelle ich gründlicher erklären sollte?

Also die Datei ausgeben, ohne sie zu lesen ist einfach, wenn man den Inhalt der Datei kennt. Die Schwierigkeit bei der Aufgabe liegt nur darin, daß es die gleiche Datei sein soll, in der auch das Programm steht. Aber schließlich soll das ja auch ein Rätsel sein ;)
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 12:36
#74830 #74830
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Also, was ich verstanden habe ist, dass man ein Programm schreiben soll, welches sich selbst wieder ausgibt. Das ist ja nicht allzu schwer. Da kann man in dem einen oder anderen Modul nachschauen, wie das da gelöst ist (hint!).
Was ich nicht verstehe ist der zweite Absatz. Soll man den eigenen Quellcode da in eine Variable speichern anstatt ihn auszugeben? Wo liegt da die Herausforderung?\n\n

<!--EDIT|Taulmarill|1173263835-->
$_=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 12:49
#74831 #74831
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Das soll keine zusätzliche Herausforderung sein, aber vielleicht hat ja jemand ne schöne Idee, was man damit machen kann, anstatt es direkt auszugeben. Und damit hätte man dann auch was schönes zum Anschauen, wenn man sich die Lösungen durchschaut. Aber damit das kein Zwang ist, hab ich das in ,,wenn möglich'' gepackt.
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 16:26
#74832 #74832
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ist die Verwendung von Core Modulen erlaubt? ;-)
When C++ is your hammer, every problem looks like your thumb.
Ishka
 2007-03-07 16:33
#74833 #74833
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich zitiere mal die Regeln:
      * 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.


Ich würde sagen, ja, sofern du nicht auf eines zugreifst, was den ganzen Quelltext zurückgeben kann.

Naja, erlaubt ist natürlich prinzipiell alles, aber die Lösung soll halt interessant sein :)
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.