Not logged in. · Lost password · Register

Page:  1  2  3  4  next 
Michi D.
Member since Oct 2008
975 posts
Subject: 2. Logik Ex
Also zur Ex:

Aufgabe war (ungefähr):

Schreiben sie ein Prolog-Programm, welches in einer Liste die letzte und die erste Zahl (bzw. Argument is ja wurst) vertauscht. (Methoden von Prolog durften nicht verwendet werden)
Eigentliches "falsches!" (s.u.) Bsp:

?- tausche([1, 2, 3, 4, 5], X).

X = [2, 3, 4, 5, 1].
Yes

Eigentlich sollte es so aussehen:
X = [5, 2, 3, 4, 1].
Yes

sprich zur Übung lieber zweiteres machen!
greez und allen die noch schreiben viel Glück ;-)
mantra
Member since Oct 2008
197 posts
wir haben exakt dasselbe geschrieben... also nicht sooo schwer
arithmetica
Member since Oct 2008
1 post
Komisch; wir mussten lediglich die Reihenfolge einer Liste umkehren. Also

?- rev([1, 2, 3, 4, 5], X).
X = [5, 4, 3, 2, 1].

Ich finds auch ein wenig ungerecht.
mantra
Member since Oct 2008
197 posts
wow
das ist boese ja
Berschi
Member since Sep 2008
132 posts
kann mir jemand zur Übung die Lösung zur ersten Aufgabe sagen? also ?- tausche([1, 2, 3, 4, 5], X).
palmcron
Member since Oct 2003
817 posts
"die Lösung" gibt's nicht, es gibt sicherlich mehrere Möglichkeiten, das zu programmieren.
Zerteile die Liste in erstes Element (trivial), letztes Element und die Liste der Elemente dazwischen, und bau's dann richtig zusammen.
Für das letzte Element und die Liste der Elemente reicht ein einzelnes Prädikat, aber man kann auch zwei Prädikate dafür schreiben.
Berschi
Member since Sep 2008
132 posts
also ich hab heute den ganzen Nachmittag rumgespielt und versucht, das Programm zum laufen zu kriegen...
Hab auch was geschafft^^

tausche([Head | Tail], Erg) :- tausche(Tail, [], Head, Erg).
tausche([Head | Tail], Tail_1, Head_1, Erg) :- tausche(Tail, [Tail_1 | Head], Head_1, Erg).
tausche([Head | []], Tail_1, Head_1, [Head, Tail_1, Head_1]).

allerdings ist die Ausgabe hier:
?- tausche([1,2,3,4,5], X).

X = [5, [[[[]|2]|3]|4], 1]

würde das auch durchgehen, oder ist das nicht das gleiche? Verbesserungsvorschläge auch gerne gesehen ;)
Oliver
Avatar
Member since Dec 2008
377 posts
Ich finde es übersichtlicher, mehrere Prädikate zu verwenden:

append([],L,L).
append([H|T],L,[H|R]) :- append(T,L,R).

lastElement([E],E).
lastElement([_|T],E) :- lastElement(T,E).

tausche([H|T],R) :-
    lastElement(T,E),
    append(TN,[E],T),
    append([E|TN],[H],R).

Ausgabe:
tausche([1,2,3,4,5],R).
R = [5, 2, 3, 4, 1] .
:-)
Fotos auf Flickr
This post was edited on 2008-12-17, 15:11 by Oliver.
liviubero (Former member)
Ich finde Prolog vollkommen unwichtig, vollkommen abstrakt, vollkommen primitiv und vollkommen nutzlos.
Prolog könnte man ehe zum Rätsel lösen nutzen, wenn man gerade nichts im Leben zu tun hat.

Das ist meine Vollkommen-Anfänger Meinung.
Verbesserung nicht vorgesehen.
This post was edited on 2008-12-14, 17:33 by Unknown user.
Sonntag
Avatar
Member since Oct 2008
141 posts
Falls noch jemand kein Plan von Prolog hat (es jemanden also geht wie mir… ) kann ich folgende Seite sehr empfehlen:
http://www.kbs.uni-hannover.de/Lehre/KI1/WS02/Uebung/uebun…

Prolog Schritt für Schritt kurz und verständlich, und das ganze als Video zum runterladen.
This post was edited on 2008-12-14, 18:37 by Sonntag.
Absurd-Mind
Mr.Java
Member since Oct 2006
727 posts
In reply to post #9
Quote by liviubero:
Das ist meine Vollkommen-Anfänger Meinung.
Verbesserung nicht vorgesehen.

Sehr Wohl.
So gehet dahin und sterbet in FriedenDummheit!
user was banned for this post.
Raim
Avatar
Member since Oct 2006
777 posts
In reply to post #9
Off Topic:
Quote by liviubero:
Verbesserung nicht vorgesehen.

Soll das heiszen, du bist unverbesserlich und siehst das auch ein?

You can't spell VordIploM without vim
miniwahr
Member since Sep 2003
719 posts
In reply to post #9
Prolog hat schon seinen Sinn. Den checkt man aber mglw. erst im Hauptstudium (oder danach  :-) )
We gratefully acknowledge support from the Ministry of Truth.
palmcron
Member since Oct 2003
817 posts
In reply to post #8
Quote by Oliver:
append([],L,L).
append([H|T],L,[H|R]) :- append(T,L,R).

lastElement([E],E).
lastElement([_|T],E) :- lastElement(T,E).

tausche([H|T],R) :-
    lastElement(T,E),
    append(TN,[E],T),
    append([E|TN],[H],R).

Hübsch, wie du append verwendest, um TN auf den Mittelteil der Liste zu setzen.
liviubero (Former member)
In reply to post #12
Ich möchte hiermit eine kleine Korrektur machen:
Meine Kritik ist nicht gegen jemanden gerichtet, sondern gegen etwas das eher mit dem System zu tun hat. Oder, besser gesagt, mit einem Grundgedanken der dem System zugrunde liegt.

Dabei möchte ich mich ausdrücklich als sehr zufrieden mit den Übungen erklären.
Ich bin ehrlich sehr sehr dankbar, dass es die Übungen gibt.
Und ich wünsche mir, dass es mehrere Leute gäbe wie mein Glolop Übungsleiter.
Vor ihm kann ich nur Respekt haben.
Danke, mein Übungsleiter!

P.S.: Ich habe mich in meinem vorherigen Post extrem ausgedrückt. Das sollte man einsehen.
Wenn ich aber solche Reaktionen wie "Dann geh und sterb in Dummheit" bekomme, dann muss ich sagen, ich wurde nicht verstanden und bin dabei nicht beleidigt.
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:
Page:  1  2  3  4  next 
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen