Thread RDW #5 - Rätsel der Woche 5 (63 answers)
Opened by Crian at 2004-08-06 12:22

Crian
 2004-08-06 12:22
#85474 #85474
User since
2003-08-04
5870 Artikel
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
70
71
72
 RDW #5 - Raetsel der Woche Nummer 5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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

         * Wenn diese Zeit abgelaufen ist, werde ich einen Thread mit
           passendem Titel erstellen, in dem die Loesungen gepostet werden
           und diskutiert werden koennen.

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

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

           Im Betreff sollte 'RDW' und die Nummer des Raetsels stehen.
           Hilfreich 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
           ausschliessen, aber wenn quasi die komplette Aufgabe durch
           die Verwendung eines Moduls ersetzt werden kann, ist dies
           vielleicht nicht der Sinn der Aufgabe gewesen.



Aufgabe: Schreibe eine Funktion, die zu einem gegebenen Skalar die Menge
~~~~~~~~ aller Permutationen seiner Zeichen zurueckgibt.

         (Golfvariante: Skalar von STDIN oder als Parameter, Permutationen
         ausgeben.)

         Dabei werden die Zeichen so behandelt, als waeren sie alle ver-
         schieden (die Eingabe von 'aaa' fuehrt zur Ausgabe von 'aaa', 'aaa',
         'aaa', 'aaa', 'aaa', 'aaa').

         Beispiel: Eingabe '123'
                   Ausgabe '123', '132', '213', '231', '312', '321'

         Die Anzahl der ausgegebenen Skalare ist n! (n Fakultaet), wobei
         n die Laenge des Eingabestrings ist. Jeder ausgegebene String hat
         natuerlich die gleiche Laenge wie die Eingabe.

         (Falls jemand nicht weiss, was n Fakultaet ist:
         
         0! := 1
         n! := n * (n-1)!

         n!  = 1 * 2 * 3 * ... * (n-1) * n
         1!  = 1
         2!  = 2
         3!  = 6
         4!  = 24
         5!  = 120
         6!  = 720
         10! = 3628800
         20! = 2.43290200817664e+018
         99! = 9.33262154439441e+155

         [ perl -e "$x=1;for(2..20){$x*=$_}print $x" ]
         )  
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

View full thread RDW #5 - Rätsel der Woche 5