Font
[thread]6520[/thread]

RDW #7 - Rätsel der Woche 7

Tags: Similar Threads

Reader: 1


<< |< 1 2 3 4 ... 8 >| >> 80 entries, 8 pages
Crian
 2004-08-20 15:46
#49466 #49466
User since
2003-08-04
5827 articles
ModeratorIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 RDW #7 - Raetsel der Woche Nummer 7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Regeln:  * Bitte nicht vor Ablauf der ersten 72 Stunden ( = drei Tage ) nach
~~~~~~~    Veroeffentlichung Hinweise (Spoiler) oder Loesungen veroeffent-
           lichen!

         * Wenn diese Zeit abgelaufen ist, werde ich einen Thread mit passen-
           dem Titel erstellen, in dem die Loesungen gepostet werden und dis-
           kutiert werden koennen.

         * Die Loesungen sollten nicht nur gepostet, sondern auch an mich ge-
           mailt werden, damit ich sie testen, "bewerten"  und zusammenfassen
           kann. Die Adrese dafuer lautet:

           crian <---AT---> perl <---MINUS---> community <---DOT---> de

           Im Betreff sollte 'RDW' und die Nummer des Raetsels stehen. Hilf-
           reich waere neben dem Quellcode der Username im Forum sowie Perl-
           und OS-Version, falls Du diese kennst.

         * Verstaendnisfragen duerfen in diesem Thread gestellt werden, aber
           Tipps und (Teil-) Loesungen sind hier unerwuenscht.

         * Ich werde die eingeschickten Programme im Netz zur Verfuegung
           stellen, so dass gerade lange Quellcodes nicht (komplett)
           gepostet werden muessen.

         * Zur Verwendung von Modulen: Ich moechte diese nicht generell aus-
           schliessen, aber wenn quasi die komplette Aufgabe durch die Ver-
           wendung eines Moduls ersetzt werden kann, ist dies vielleicht nicht
           der Sinn der Aufgabe gewesen.



Aufgabe: Die Goldbachsche Vermutung lautet "Jede natuerliche, gerade Zahl
~~~~~~~~ groesser als vier laesst sich als Summe von zwei Primzahlen dar-
         stellen."

         Beispiele:  6 = 3 + 3
                     8 = 5 + 3
                    10 = 7 + 3
                    12 = 7 + 5

         (Gegenbeispiel fuer ungerade Zahlen: 11)

         Es soll eine Funktion "goldbach" der folgenden Art

             sub goldbach ($) {
                 my ($zahl) = @_;
                 ...
                 return ($p1, $p2);
             }

         geschrieben werden, welche eine natuerliche Zahl entgegennimmt und
         nach zwei Primzahlen sucht, deren Summe die uebergebene Zahl ist.
         Zurueckgegeben wird eine Liste mit den beiden gefundenen Zahlen bzw,
         eine leere Liste.

         Fuer die Golfer: Hier soll sich das Programm so verhalten wie die
         oben beschriebene Funktion, wobei dann "x = y + z" bzw. eine Meldung
         ausgegeben wird, dass sich kein solches Paar finden liess.

         Bei der Golfloesung zaehlt nur die Kuerze in Zeichen (nach der
         Zaehlung von DS), bei den normalen Loesungen zaehlt die Schnelligkeit
         des Algorithmus.

         (Das Thema dieses Raetsels wurde von [E|B] vorgeschlagen.)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Ishka
 2004-08-20 18:35
#49467 #49467
User since
2003-08-04
771 articles
HausmeisterIn
[Homepage] [default_avatar]
meine erste Golflösung hat 100 Zeichen (nein, nicht ungefähr, genau 100 ;) )
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}
[E|B]
 2004-08-20 22:28
#49468 #49468
User since
2003-08-08
2561 articles
HausmeisterIn
[Homepage] [default_avatar]
Meine Golflösung hat 75 Zeichen. :)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
DS
 2004-08-21 03:27
#49469 #49469
User since
2003-08-04
247 articles
BenutzerIn
[default_avatar]
1. Super, eine Golf-Aufgabe!!! :) :) :)
2. Goldbach original ist doch alle Zahlen > 2, oder?
3. Sollen die Golflösungen wirklich erst die Eingabe überprüfen??? :rock:
[s]4. Müssen es 2 unterschiedliche Primzahlen sein?[/s] Nein, siehe einzige Lösungsmöglichkeit von 6.

Edit: Punkt 4 selbst beantwortet... ;)\n\n

<!--EDIT|DS|1093047280-->
Ishka
 2004-08-21 05:54
#49470 #49470
User since
2003-08-04
771 articles
HausmeisterIn
[Homepage] [default_avatar]
[E|B
,20.08.2004, 20:28]Meine Golflösung hat 75 Zeichen. :)

74 - jetzt kann ich schlafen gehn :p
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}
steve
 2004-08-21 15:38
#49471 #49471
User since
2004-03-04
52 articles
BenutzerIn
[default_avatar]
ich komm nich unter 132 :( Na viell kommt noch was sonst werde ich die Lösung so einreichen.

steve
[E|B]
 2004-08-21 15:42
#49472 #49472
User since
2003-08-08
2561 articles
HausmeisterIn
[Homepage] [default_avatar]
Mist, meine Lösung hat mehr als ich angegeben habe.
Mein Fehler: Ich habe einfach ein print length() drüber laufen lassen, habe aber die Variablen nicht maskiert. Mist...
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
DS
 2004-08-21 16:56
#49473 #49473
User since
2003-08-04
247 articles
BenutzerIn
[default_avatar]
Um das Ganze ein bisschen anzuheizen... meine Lösung hat 79... allerdings kann ich  bei "günstiger Interpretierung der Aufgabenstellung" diese Lösung auf 72 Zeichen reduzieren... :p

Ich muss allerdings noch dazusagen, dass das Proggi davon ausgeht, dass die Eingabe stimmt... wenn die Eingabe geprüft werden soll, dann sollten wir uns vielleicht darauf einigen, welche Meldung ausgegeben werden soll, oder? :cool:

Edit: Logikfehler in einem Satz ausgebessert...\n\n

<!--EDIT|DS|1093093197-->
steve
 2004-08-21 17:06
#49474 #49474
User since
2004-03-04
52 articles
BenutzerIn
[default_avatar]
na ich prüf auch nich .. bin auf 100 Zeichen gekommen. Habs jetzt abgeschickt. Auf das eine oder andere Leerzeichen pfeif ich. Und nen paar Probs hab ich irgendwie auch .. aber da frag ich ma, wenn die Ergebnisse raus sind. (&i geht nich wirklich)
Außerdem hab ich nen bissl "geklaut" :p

steve
Task
 2004-08-21 17:17
#49475 #49475
User since
2004-08-21
3 articles
BenutzerIn
[default_avatar]
Hallo
hab mich gerade mal durch die Beiträge der letzten 24 Stunden gebaggert :)
Hier angekommen: das ist ja doll was ihr da so an code schreibt, aber ich verstehe es einfach nicht :(
<< |< 1 2 3 4 ... 8 >| >> 80 entries, 8 pages



View all threads created 2004-08-20 15:46.