0 Daumen
350 Aufrufe

Wir haben folgende Datentypen:



data Kettenglied = Gold | Silber | Platin deriving (Eq, Show)

data Kette = Empty | Join Kette Kettenglied Kette



Aufgabe:

Eine Funktion liste :: Kette -> [Kettenglied] zur Bestimmung der Materialfolge von links nach rechts implementieren.


Für die Ketten gilt das Folgende:
i) Jede Kette hat einen Anfang (linke Seite) und ein Ende (rechte Seite)
ii) Eine leere Kette ist eine Kette
iii) Das Ende einer Kette ch1 kann durch ein Kettenglied l mit dem Anfang eienr Kette ch verbunden
werden.

Avatar von

1 Antwort

0 Daumen

Um die Materialfolge einer Kette von links nach rechts zu bestimmen, können Sie eine rekursive Funktion verwenden, die die linken und rechten Teilketten der Kette besucht und die Materialien in der richtigen Reihenfolge zusammenfügt.

Hier ist eine mögliche Implementation der Funktion liste:

liste :: Kette -> [Kettenglied]
liste Empty = []
liste (Join left material right) = (liste left) ++ [material] ++ (liste right)

In dieser Implementation besucht die Funktion zuerst den linken Teil der Kette durch Aufruf von liste left und fügt die Materialien in die Ergebnisliste ein. Dann wird das aktuelle Kettenglied hinzugefügt. Schließlich besucht die Funktion den rechten Teil der Kette durch Aufruf von liste right und fügt die Materialien in die Ergebnisliste ein.

Da die Funktion rekursiv ist, werden die Materialien von links nach rechts in die Ergebnisliste eingefügt und entsprechen damit der Materialfolge der Kette.




Avatar von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community