Thread wollt ihr weitere RDWs? (10 answers)
Opened by Taulmarill at 2005-02-14 19:55

betterworld
 2005-05-20 01:30
#88545 #88545
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Ich hätte auch einen Vorschlag. Vielleicht ist er etwas schwer, jedenfalls erfordert er imho relativ gute Kenntnisse von Perls Referenzen.

Drei Teile:
a) Erstellen eines Binärbaumes anhand von vom Benutzer gegebenen Zahlen. Der Baum kann mit Data::Dumper ausgegeben werden.
b) Ausgabe der Eingabezahlen in sortierter Reihenfolge (natuerlich durch Abgrasen des Baumes, nicht durch sort{})
c) [nur für diejenigen, für die Teil a und b zu langweilig ist]: Ausbalancieren des Baumes, sodass an jeder Verzweigung jeder Ast insgesamt höchstens ein Blatt mehr oder weniger enthält als der andere. Danach erneute Ausgabe mit Data::Dumper

Ich habe eine Lösung fur a in 13 Zeilen, fuer b in 7 Zeilen, fuer c in 23 Zeilen (leider muss ich gestehen, dass diese 23 Zeilen einen Haufen Warnungen ausgeben..)
Beispiel, wie es ungefähr aussehen sollte:
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
perl baum.pl 1 2 3 4 5 6 2.5 1.5
Teil a)
$tree = {
'right' => {
'left' => {
'count' => 1,
'leaf' => '1.5'
},
'right' => {
'left' => {
'count' => 1,
'leaf' => '2.5'
},
'right' => {
'right' => {
'right' => {
'count' => 1,
'leaf' => 6
},
'count' => 2,
'leaf' => 5
},
'count' => 3,
'leaf' => 4
},
'count' => 5,
'leaf' => 3
},
'count' => 7,
'leaf' => 2
},
'count' => 8,
'leaf' => 1
};

Teil b)
1
1.5
2
2.5
3
4
5
6

Teil c)
$tree = {
'left' => {
'left' => {
'right' => {
'count' => 1,
'leaf' => '1.5'
},
'count' => 2,
'leaf' => 1
},
'right' => {
'count' => 1,
'leaf' => '2.5'
},
'count' => 4,
'leaf' => 2
},
'right' => {
'left' => {
'count' => 1,
'leaf' => 4
},
'right' => {
'count' => 1,
'leaf' => 6
},
'count' => '3',
'leaf' => 5
},
'count' => 8,
'leaf' => 3
};

Dabei ist jeweils:
leaf: Ein Wert
left: Ein Unterbaum, der nur kleinere Werte enthält
right: Entsprechend
count: Die Anzahl der Blätter des Astes

View full thread wollt ihr weitere RDWs?