Quoted
Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.
This post has been edited 2 times, last edit by "cartman" (Jul 26th 2009, 9:48pm)
warum das, ist das persönlich auf dich oder auf die klausur bezogen, so schwer war die gar nicht,trotz des großen prolog punktanteils,als ich die damals (allerdings im ws) geschrieben habe, gab es sogar 2,5 stunden zeitMeld
Ich wags auch, obwohl mir bislang jeder dem ich dieses scheinbare Vergehen gestehe, sagt, dass die Chancen zu bestehen gegen Null tendieren -.-
Wozu die Panikmache? Prolog ist schon was Eigenes, ok, aber Scheme war es auch...
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
word(abalone,a,b,a,l,o,n,e). word(abandon,a,b,a,n,d,o,n). word(enhance,e,n,h,a,n,c,e). word(anagram,a,n,a,g,r,a,m). word(connect,c,o,n,n,e,c,t). word(elegant,e,l,e,g,a,n,t). crossword(V1,V2,V3,H1,H2,H3) :- word(V1,VW11,VW12,VW13,VW14,VW15,VW16,VW17), word(V2,VW21,VW22,VW23,VW24,VW25,VW26,VW27), word(V3,VW31,VW32,VW33,VW34,VW35,VW36,VW37), word(H1,HW11,HW12,HW13,HW14,HW15,HW16,HW17), word(H2,HW21,HW22,HW23,HW24,HW25,HW26,HW27), word(H3,HW31,HW32,HW33,HW34,HW35,HW36,HW37), HW12=VW12,HW14=VW22,HW16=VW32, HW22=VW14,HW24=VW24,HW26=VW34, HW32=VW16,HW34=VW26,HW36=VW36, V1 \= V2, V1 \= V3, V1 \= H1, V1 \= H2, V1 \= H3, V2 \= V3, V2 \= H1, V2 \= H2, V2 \=H3, V3 \= H1, V3 \= H2, V3 \= H3, H1 \= H2, H1 \= H3, H2 \= H3. |
Source code |
|
1 |
zahl(succ(X)):-zahl(X). |
Source code |
|
1 |
zahl(0). |
Source code |
|
1 |
zahl(X) :- zahl(succ(0)). |
Quoted
Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.
Ich weiß nicht, wie succ intern implementiert ist (ist es das überhaupt?). Allerdings ging es bei dieser Aufgabe um das Verständnis, wie Rekursion in Prolog funktioniert.Wenn ich schon bei Fragen bin, ich hab da direkt noch eine:
Ich wollte mir Zahlen rekursiv definieren.
/Edit2: Oh sorry, ich habe noch etwas aus dem Skript vergessen.
Der Nachfolger einer Zahl, ist auch eine Zahl. (Dies alleine bewirkt allerdings nicht, dass eine Zahl ausser 0, eine Zahl ist. Wieso !?)
Source code
1 zahl(succ(X)):-zahl(X).
Die Idee: 0 ist eine Zahl.
Source code
1 zahl(0).
Ist die Zahl der Nachfolger von 0 (also eine 1), dann ist sie auch eine Zahl.
Source code
1 zahl(X) :- zahl(succ(0)).
Nun wollte ich die Rekursion einbauen. Also, wenn eine Vatriablel ein Nachfolger einer Zahl ist, die ein Nachfolger von 0 ist, dann ist auch sie eine Zahl. Allerdings war dies nicht nötig, da schon alle Zahlen als eben solche erkannt werden. Daher meine Frage: Verstehe ich meine eigene Funktion nicht richtig, oder ist succ eventuell rekursiv definiert?
Wie kommst du denn darauf, dass dieses Programm von Anfang an deine Zahlen als solche erkennt? Hast du den Tracer angeschmissen? Vielleicht implementierst du mal eine Funktion "mySucc", die das Gleiche erledigt und traced dann noch einmal?Quoted
Source code
1 2 zahl(0). zahl(X) :- zahl(succ(0)).
Source code |
|
1 2 |
zahl(0). zahl(succ(X)) :- zahl(X). |
Source code |
|
1 2 3 4 |
X = 0 ; X = succ(0) ; X = succ(succ(0)) ; X = succ(succ(succ(0))) |
Source code |
|
1 |
zahl(X) :- zahl(succ(0)). |
Source code |
|
1 2 3 4 5 6 7 |
Call: (7) zahl(7) ? creep Call: (8) zahl(succ(0)) ? creep Call: (9) zahl(0) ? creep Exit: (9) zahl(0) ? creep Exit: (8) zahl(succ(0)) ? creep Exit: (7) zahl(7) ? creep true |
Quoted
Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.
Source code |
|
1 2 3 |
zahl(0). %% ist ein Fakt zahl(succ(X)) :- zahl(X). zahl(X) :- zahl(succ(0)). |
Source code |
|
1 2 3 4 5 6 |
zahl(0). zahl(X):- mySucc(X). mySucc(X):- Y is X-1, zahl(Y). |
Source code |
|
1 2 |
zahl(0). zahl(X) :- Y is X-1, zahl(Y). |
Quoted
Man findet immer dort besonders viel Chaos, wo man nach Ordnung sucht. Das Chaos besiegt die Ordnung, weil es besser organisiert ist.