Not logged in. · Lost password · Register

Shadin
Member since Oct 2014
147 posts
Subject: WS14 ADT
Hallo alle ..

hat jemand schon die Aufgabe 6 in der WS14 gemacht , und da bemerkt das ein Fehler gibt ? ...

bei Teilaufgabe b) muss man concat Axiome schreiben .. was in ForumLösungen steht , nach meine Meinung falsch ist ..

aber was die richtige Antwort , bin ich mir nicht sicher , ob ich die gefunden habe ..

hier meine Vorschlag ..

concat(cons(X,F),cons(Y,L))=cons(X,cons(tail(F),cons(Y,L))

wäre das nicht ein bisschen besser , als was in Forum steht ? ..

wenn jemand mir erklären kann was richtig und was nicht ..

Danke im Voraus ..
Shadin
Member since Oct 2014
147 posts
und wird glaube das gleiche bei c) einfacher funktionieren mit tail

so auch für c) ..

filter(odd,cons(X,L))=cons(X,tail(L)) if (apply(odd,X))==true)

filter (odd,cons(X,nil))=cons(X,nil)  if (apply(odd,X))==true)
                                   nil                sonst
vaiquero
Member since Oct 2014
346 posts
hmm also glaube deine loesung funktioniert nicht, da
 ja Tail, ne FunList als ergebnis liefert.

cons, erwartet jedoch ein T als erstes argument.

con(T, Funlist)
Tail : FunList -> FunList
Volschaf
Member since May 2013
220 posts
In reply to post #1
Quote by Shadin:
hat jemand schon die Aufgabe 6 in der WS14 gemacht , und da bemerkt das ein Fehler gibt ? ...
Du meinst WS13.

Quote by Shadin:
bei Teilaufgabe b) muss man concat Axiome schreiben .. was in ForumLösungen steht , nach meine Meinung falsch ist ..
Ja, das ist defintiv Schwachsinn, beschreibt ja nur den Fall für zwei konkrete Listen.

Quote by Shadin:
concat(cons(X,F),cons(Y,L))=cons(X,cons(tail(F),cons(Y,L))


Deine Typen passen hier nicht. tail liefert als Ergebnis etwas vom Typ FunList. Du benutzt es aber als ersten Parameter von cons, der vom Typ T sein sollte.

Für die Lösung, überleg dir mal, wie eine Liste aussehen kann, d.h. durch welche Konstruktoren sie erzeugt werden kann. Dann überlege dir, wie sich concat verhalten muss, wenn ihre beiden Parameter durch diese unterschiedlichen Konstruktoren erzeugt werden.

Noch ein Hinweis: Das Zauberwort heißt "rekursive Definition".
Shadin
Member since Oct 2014
147 posts
Entschuldigung , in meine Lösung steht doch kein tail .. sondern head

aber du hast Recht .. muss so sein vielleicht ? ..

concat(cons(X,F),cons(Y,L))=cons(X,concat(tail(F),cons(Y,L))
vaiquero
Member since Oct 2014
346 posts
Quote by Shadin:
Entschuldigung , in meine Lösung steht doch kein tail .. sondern head

aber du hast Recht .. muss so sein vielleicht ? ..

concat(cons(X,F),cons(Y,L))=cons(X,concat(tail(F),cons(Y,L))

Shadin
Member since Oct 2014
147 posts
ja ich habe das ja doch geändert .. concat bekommt zwei FunList ..

das musste eigentlich funktionieren !!! ..

wenn nicht , dann brauche ich wirklich Hilfe in diese Aufgabe Typ ..
Volschaf
Member since May 2013
220 posts
In reply to post #5
Quote by Shadin:
concat(cons(X,F),cons(Y,L))=cons(X,concat(tail(F),cons(Y,L))


Ja, sieht (fast) gut aus. Momentan verlierst du bei jedem Aufruf von concat ein Element der erste Liste, da du X übernimmst, aber dann mit tail(F) weitermachst, was ja das erste Element von F verwirft und die Restliste zurückgibt.

Außerdem kann eine Liste natürlich auch durch nil erzeugt werden, das muss in de Axiomen ggf. berücksichtigt werden.
vaiquero
Member since Oct 2014
346 posts
In reply to post #7
upss sry zu schnell gelesen...ja schaut auf jeden fall gut aus
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen