Font
[thread]6386[/thread]

RDW #1 - Rätsel der Woche Nummer eins

Tags: Similar Threads

Readers: 2


<< |< 1 2 3 4 ... 12 >| >> 113 entries, 12 pages
Crian
 2004-07-08 21:52
#83954 #83954
User since
2003-08-04
5826 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 RDW #1 - Rätsel der Woche Nummer 1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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

* Wenn diese Zeit abgelaufen ist, werde ich einen Thread mit
passendem Titel erstellen, in dem die Lösungen gepostet werden
und diskutiert werden können.

* Die Lösungen sollten nicht nur gepostet, sondern auch an mich
gemailt werden, damit ich sie testen, "bewerten" und zu-
sammenfassen kann.
Die Adrese dafür lautet:

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

Im Betreff sollte 'RDW' und die Nummer des Rätsels stehen.
Hilfreich wäre neben dem Quellcode der Username im Forum
sowie Perl- und OS-Version, falls Du diese kennst.

* Verständnisfragen dürfen in diesem Thread gestellt werden, aber
Tipps und (Teil-) Lösungen sind hier unerwünscht.

* Ich werde die eingeschickten Programme im Netz zur Verfügung
stellen, so dass gerade lange Quellcodes nicht (komplett)
gepostet werden müssen.



Aufgabe: Du sollst ein Programm schreiben, das ausgehend von dem Verzeichnis,
~~~~~~~~ von dem aus der Benutzer dieses Programm startet die Dateien dieses
Verzeichnisses und all seiner Unterverzeichnisse in eine Struktur
der folgenden Art einliest:


%dir = ( dir1 => { subdir1.1 => { file1.1.1 => '',
file1.1.2 => '',
},
subdir1.2 => { file 1.2.1 => '',
},
subdir1.3 => {
},
file1.1 => '',
file1.2 => '',
file1.3 => '',
},
dir2 => { file2.1 => '',
},
file1 => '',
file2 => '',
file3 => '',
);

Verzeichnisstruktur dazu:

./
./dir1/
./dir1/subdir1.1/
./dir1/subdir1.1/file1.1.1
./dir1/subdir1.1/file1.1.2
./dir1/subdir1.2/
./dir1/subdir1.2/file1.2.1
./dir1/subdir1.3/
./dir1/file1.1
./dir1/file1.2
./dir1/file1.3
./file1
./file2
./file3

Bau in Dein Programm eine Funktion ein, die die erzeugte Daten-
struktur ausgibt und rufe diese im Defaultfall auf.



Extras: * Wie sollen Softlinks behandelt werden (wenn Dir das nichts sagt,
~~~~~~~ kümmer Dich nicht weiter drum)?
* Welche Optionen findest Du sinnvoll? Bau ein, was Du für sinnvoll
hältst.
* Nach Möglichkeit sollte das Programm mit den unterschiedlichen
Directorytrennern von verschiedenen Betriebssystemen zurecht
kommen. Wenn Du aber nicht weißt, wie Du das elegant lösen kannst,
lass es weg.
\n\n

<!--EDIT|Crian|1089310247-->
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
reply with quote
Crian
 2004-07-09 00:18
#83955 #83955
User since
2003-08-04
5826 articles
ModeratorIn
[Homepage]
user image
Den obigen Text mit den Regeln und der Aufgabe findet man >>> hier <<< nochmal zum download.

Ich habe auch nochmal eine Testsuit erzeugt (ein Verzeichnisbaum mit leeren Dateien), den man >>> hier <<< herunterladen kann.

Es handelt sich dabei um die Datei rdw01_testsuit.tgz mit folgender Größe und Inhalt:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
crian@blitz:~/perl/rdw/rdw01> ls -l rdw01_testsuit.tgz
-rw-r--r-- 1 crian users 345 2004-07-08 22:24 rdw01_testsuit.tgz
crian@blitz:~/perl/rdw/rdw01> tar tvzf rdw01_testsuit.tgz
drwxr-xr-x crian/users 0 2004-07-08 22:04:02 rdw01_testsuit/
drwxr-xr-x crian/users 0 2004-07-08 22:03:56 rdw01_testsuit/dir1/
drwxr-xr-x crian/users 0 2004-07-08 22:03:17 rdw01_testsuit/dir1/subdir1.1/
-rw-r--r-- crian/users 0 2004-07-08 22:03:13 rdw01_testsuit/dir1/subdir1.1/file1.1.1
-rw-r--r-- crian/users 0 2004-07-08 22:03:17 rdw01_testsuit/dir1/subdir1.1/file1.1.2
drwxr-xr-x crian/users 0 2004-07-08 22:03:22 rdw01_testsuit/dir1/subdir1.2/
-rw-r--r-- crian/users 0 2004-07-08 22:03:22 rdw01_testsuit/dir1/subdir1.2/file1.2.1
drwxr-xr-x crian/users 0 2004-07-08 22:02:57 rdw01_testsuit/dir1/subdir1.3/
-rw-r--r-- crian/users 0 2004-07-08 22:03:52 rdw01_testsuit/dir1/file1.1
-rw-r--r-- crian/users 0 2004-07-08 22:03:54 rdw01_testsuit/dir1/file1.2
-rw-r--r-- crian/users 0 2004-07-08 22:03:56 rdw01_testsuit/dir1/file1.3
-rw-r--r-- crian/users 0 2004-07-08 22:04:00 rdw01_testsuit/file1
-rw-r--r-- crian/users 0 2004-07-08 22:04:01 rdw01_testsuit/file2
-rw-r--r-- crian/users 0 2004-07-08 22:04:02 rdw01_testsuit/file3



Lustig, ich meinte doch mich irgendwoher an das oben verwendete Format zur Beschreibung der Dateien zu erinnern, habe es aber einfach so hingeschrieben, es stimmt aber mit tar's Ausgabe überein =)\n\n

<!--EDIT|Crian|1089318551-->
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
reply with quote
Taulmarill
 2004-07-09 13:11
#83956 #83956
User since
2004-02-19
1749 articles
BenutzerIn

user image
dürfen standartmodule benutzt werden?
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
reply with quote
pq
 2004-07-09 13:28
#83957 #83957
User since
2003-08-04
12180 articles
Admin1
[Homepage]
user image
[quote=Taulmarill,09.07.2004, 11:11]dürfen standartmodule benutzt werden?[/quote]
nein, nur standardmodule.
sorry, crian, konnte nicht widerstehen :)
aber soweit ich das verstanden habe, geht es nicht um beschränkungen
wie beim perlgolf, oder?
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
reply with quote
Crian
 2004-07-09 13:40
#83958 #83958
User since
2003-08-04
5826 articles
ModeratorIn
[Homepage]
user image
genau, es geht darum, das die Anfänger etwas lernen, und das Benutzen von (Standard-) Modulen ist sehr lernenswert :-)
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
reply with quote
jan
 2004-07-09 13:46
#83959 #83959
User since
2003-08-04
2533 articles
ModeratorIn
[Homepage] [default_avatar]
eigentlich sollte es einen RDW1-OT-Thread geben. Ich finde nämlich, dass das lösen von problemen ohne fertige Module zwar nicht ganz so effektiv und vielleicht auch nicht ganz so sauber ist, aber viel mehr lehrt. wenn man nämlich dann später mit modulen arbeitet, ist man nicht gleich aufgeschmissen, wenn man mal eine lösung braucht, die etwas anders ist als der rest, für die es kein fertiges modul gibt. insofern: module sind sinnvoll, aber man sollte, zum üben, finde ich, eher selbst die lösungen bauen. zum rechnen benutzt man einen taschenrechner, aber um es zu lernen, muss man selbst rechnen.
reply with quote
Crian
 2004-07-09 13:51
#83960 #83960
User since
2003-08-04
5826 articles
ModeratorIn
[Homepage]
user image
Ok, es ging hier nicht darum, File::Find einzusetzen... insofern hast Du recht, aber ich dachte das wäre klar =)
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
reply with quote
steve
 2004-07-09 16:24
#83961 #83961
User since
2004-03-04
52 articles
BenutzerIn
[default_avatar]
jetzt mit oder ohne File::Find?
reply with quote
Crian
 2004-07-09 16:39
#83962 #83962
User since
2003-08-04
5826 articles
ModeratorIn
[Homepage]
user image
ohne
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
reply with quote
sri
 2004-07-09 19:48
#83963 #83963
User since
2004-01-29
828 articles
BenutzerIn
[Homepage] [default_avatar]
Gute Idee so ein kleines quiz! :)

[quote=Crian,08.07.2004, 19:52]%dir = ( dir1 => { subdir1.1 => { file1.1.1 => '',
file1.1.2 => '',
},
subdir1.2 => { file 1.2.1 => '',
},
subdir1.3 => {
},
file1.1 => '',
file1.2 => '',
file1.3 => '',
},
dir2 => { file2.1 => '',
},
file1 => '',
file2 => '',
file3 => '',
);[/quote]
Und die Ausgabe soll so aussehen?
reply with quote
<< |< 1 2 3 4 ... 12 >| >> 113 entries, 12 pages



View all threads created 2004-07-08 21:52.