Logik:Klausuren/04.11.2004/4. Aufgabe
Aus Tudwiki
Inhaltsverzeichnis
1. Aufgabenstellung[Bearbeiten]
Schreiben Sie Prolog-Programme $ trans /\,2 $ und $ laenge /\,2 $ die folgendes leisten:
a)
$ laenge /\,2 $ ermittelt die Laenge einer liste .
z.B. soll der Aufruf $ ?-laenge (\left[\,a,b,c,d\,\right]\,,L)\,. $ das Ergebnis $ L=4\, $ liefern.
b)
$ trans /\,2 $ transformiert eine Liste von einfachen Termen in eine Liste , deren Elemente einelementige Listen dieser Terme sind.
z.B. soll der Aufruf $ ?-trans ([a,b,c,d]\,,E)\,. $ das Ergebnis $ E=\left[\;[a]\,,[b]\,,[c]\,,[d]\;\right] $ liefern.
2. Lösung[Bearbeiten]
a)
$ laenge\,([]\,,0). $
$ laenge\,([K|R]\,,E):-\,laenge\,(R\,,E1),\ E\ is\ E1+1. $
b)
$ trans\,([\ ]\,,[\ ]). $
$ trans\,([K|R]\,,E):-\,trans\,(R\,,E1),\ append([\,[K]\,],\,E1,\,E). $