Klausur vom 19.02.2009 - Aufgabe 4

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur vom 19.02.2009 - Aufgabe 4
Hallo Leute,
ich komme bei der a) nicht weiter! Das habe ich bis jetzt:
create = l
contains(x,create) = false

aber wie geh ich durch die Liste durch?
sowas wie contains(x, prepend(y,create)) und dann mit fallunterscheidung geht ja nicht, weil ich ja immer was hinzufüge…
Hat da jmd eine Lösung?


also ich hab das so:

A4: contains(x, create) = false
A5: contains(x, append(y,l))= 1+contains(x,l) //wenn x=y
contains(x,l) // wenn x!=y

stopp das stimmt nich was ich schreibe. ich glaube beim fall x=y müsste einfach true hin.


ist es nicht einfach true wenn x = y und false wenn x != y?


kaut hat schon recht. Würdest du einfach false zurückgeben, würdest du nur das zuletzt angefügte Element ansehen.


also bei dem ersten schon glaub da reicht einfach true. hab es schon editiert gehabt.


Stimmt, ich hatte es in meinem beispiel mit create statt l aufgeschrieben. Ob das wohl auch durchgeht?


Nein, weil dann nicht alle Fälle abgedeckt sind und sich das Axiom somit nicht gemäß Spezifikation verhält.


ich dnek man braucht beide axiome. also einmal wie sich contains auf create auswirkt und einmal wie es sich auf append auswirkt.


Genau da liegt auch mein Problem… Man darf ja sowas wie remove nicht neu definieren…


und wo liegt jetz das problem? Versteh das grad nicht.


Dein 2. Fall stimmt doch so nicht oder?


meinst du den A5 ?

wieso soll das nich stimmen?


Weil du als 2. Fall einfach sagst, er soll in der Liste weitersuchen, aber du sagst nicht wie?
Oder ich verstehe es grad einfach nicht^^


naja du brauchst ihm ja nicht sagen wie er weiter suchen soll. Wieso sollte man das denn sagen müssen?
Du weißt ja nicht ob das gesuchte Element darin überhaupt existiert.


Willkommen in der wunderbaren Welt der Rekursion. Das „Weitersuchen“ findet wieder mit den selben zwei Fällen statt. Entweder ist die Liste jetzt leer oder es ist noch (mindestens) ein Element drin.


Ich hab für die b) A → D → create und für die c)
append(head(apped(D,create)),append(A,create))
append(head(prepend(D,create)),prepend(A,create)) A1,A1
prepend(A,append(head(prepend(D,create)),create)) A2
prepend(A,prepend(head(prepend(D,create)),create)) A1

Passt das so?


Das head noch auflösen, du willst nur Primärkonstruktoraufrufe haben


prepend(A,prepend(D,create)) A3