Samstag, 9. März 2013

Family tree

Eigentlich könnte „Family tree“ ein schönes Problem sein, müsste man nicht eine durchaus komplexe Datenstruktur aufbauen, die sowohl aufsteigend, als auch absteigend durchsucht werden kann. Ich denke daran die Datenstruktur in ein Dictionary zu packen und die Auf- bzw. Abwärtssuche dann gesondert zu implementieren.

Ein- und Ausgabe

Ich erhalte als Eingabe folgende Datensätze:
9 
A + B : C , D , E . 
F + G : H . 
I + J : K , L . 
C + H : M , N . 
D + K : O . 
L + E : P , Q , R , S . 
N + Q : T , U , V . 
O + S : W , X . 
Y + H : Z . 
7 
K > O ? 
F > W ? 
B ^ U ? 
O ^ V ? 
A > Z ? 
F > Z ? 
X ^ Z ?

Die Ausgabe soll folgendermaßen aussehen:
K > O ? TRUE 
F > W ? FALSE 
B ^ U ? FALSE 
O ^ V ? TRUE 
A > Z ? FALSE 
F > Z ? TRUE 
X ^ Z ? FALSE 

Das Problem

Eine Visualisierung dient der ersten Orientierung:

Ein Stammbaum erzeugt aus den Anweisungen

Also gehen wir es an.

1 Kommentar:

  1. Ich denke hier sollte man mit Klassen beziehungsweise mindestens einer Klasse arbeiten die einen Knoten im Stammbaum beschreibt. Eine Lösung mit verschachtelten Wörterbüchern oder Listen, entweder mit zyklischen Verweisen oder aber zwei getrennten Datenstrukturen für die beiden Richtungen ist sehr wahrscheinlich schwerer zu verstehen.

    AntwortenLöschen