[Progra] Uebung 12 3. Listenproblem

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Uebung 12 3. Listenproblem

Beitragvon proxylittle » 01.02.08 21:37

Hallo.. ich Nervensäge schon wieder. Ich weiß nicht wie ich anfangen soll. Hab mir nun hier alles draufgeschmissen und sorgfältig Übungen + VL + Tutorials angeschaut und stolpere immer am gleichen Problem.

Denn laut Beispielen muss bei der a) ja sowas rauskommen wie:

Code: Alles auswählen
nachfolger(bergturm,aussichtspunkt,linie1) YES


wie definiere ich nun meine linie1 das daraus eine Liste wird und ich diese in nachfolger(X,Y,Liste) reintun kann?

Als Beispiel wollte ich das nu erstmal mit einem Element testen:
Code: Alles auswählen
nachfolger(X,[X|_]).
nachfolger(X,[H|T]):- nachfolger(X,T).


soll ich dann jetzt meine linie1 einfach separat eintippen, wie z.b.:
Code: Alles auswählen
nachfolger(bergturm,aussichtspunkt,[berturm,aussichtspunkt,..]).


oder gibt es eine Methode linie1 zusammenzufassen? Hab vieles ausgetestet, klappt aber bei keiner meiner ideen.
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon mirko » 01.02.08 22:10

für diese übung braucht ihr keine listen

du musst bei der a einfach nur stupide die fakten runterschreiben...
Zuletzt geändert von mirko am 01.02.08 23:13, insgesamt 1-mal geändert.
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon thana » 01.02.08 22:51

Da war meine List der Dinge die man machen kann um auch ohne weitere Hilfe von anderen Menschen weiterzukommen wohl nicht Vollständig - den wikipedia-Artikel zu Prolog (Haskell) lesen um das Grundprinzip der Sprache zu verstehen ;-)
thana
 
Beiträge: 264
Registriert: 18.10.07 17:01

Beitragvon mirko » 01.02.08 23:16

hm, ich stelle gerade fest, dass tatsächlich auf zwei folien listen vorkommen - habe meinen beitrag oben entsprechend angepasst. letztes jahr kamen diese aber zumindest in den übungen nicht vor...
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon HE » 01.02.08 23:22

Herr Giesl wird noch Listen in Prolog behandeln, dies wird Teil der nächsten Übung (die am kommenden Mittwoch ausgegeben wird und *nicht* mehr in den Tutorien besprochen werden kann) sein. Im Grunde sind die aber relativ ähnlich zu Listen in Haskell, sollte also die meisten vor kein großes Problem stellen.
Benutzeravatar
HE
 
Beiträge: 453
Registriert: 09.03.07 12:20
Wohnort: Aachen
Studiert seit: WS 06/07
Anwendungsfach: Mathe

Beitragvon proxylittle » 01.02.08 23:25

@thana: hehe...

@mirko: deshalb kam ich auch ins grübeln!

@he: danke! Damit haste auch gesagt wir brauchen jetzt keine listen.. *freu*
Zuletzt geändert von proxylittle am 02.02.08 19:15, insgesamt 1-mal geändert.
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon mirko » 01.02.08 23:28

HE hat geschrieben:Herr Giesl wird noch Listen in Prolog behandeln, dies wird Teil der nächsten Übung (die am kommenden Mittwoch ausgegeben wird und *nicht* mehr in den Tutorien besprochen werden kann) sein. Im Grunde sind die aber relativ ähnlich zu Listen in Haskell, sollte also die meisten vor kein großes Problem stellen.


hm, ok - wir haben letztes jahr sowieso _sehr_ wenig prolog gemacht - naja, was soll's

@proxylittle: guck doch bitte mal links neben meinem beitrag nach, wie man meinen namen schreibt - danke!
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon proxylittle » 02.02.08 19:15

@proxylittle: guck doch bitte mal links neben meinem beitrag nach, wie man meinen namen schreibt - danke!


sry alte gewohnheit.. kumpel hieß mirco mit 'c'.. sry mirko
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon proxylittle » 03.02.08 05:03

ok.. mal ganz grooooßes:

hääääääääääää?????

Darf ich denn jetzt Listen verwenden? Weil wenn ich was anderes, z.b. Fakten machen will komm ich vollkommen durch... hab jetzt alles trotzdem mal mit listen programmiert... steht ja nirgends man darfs net... naja. Jetzt bleib ich hängen bei 3e)... ich glaub ich hätts von Anfang an anders machn sollen...

erklärt mir mal bitte wie ich das eingebe in... sagen wir mal nachfolger(X,Y,Fakt). ????

Soll ich die Fakten einfach so schreiben:
linie1(berghotel,aussichtspunkt,hochsteg,niedersteg,burg).

??? wenn ja wie greif ich dann drauf zu... so ein Testprogramm funktioniert hier nicht!!

Code: Alles auswählen
nf(X,cons(X,_)).
nf(X,cons(H,T)):- nf(X,cons(T)).


der erwartet dann auch wirklich das ich cons statt linie eintippe :/ soll ich das dann immer separat machen? Oder darf ich die ersten paar aufgaben jetzt mit meiner Liste so lassen???

Krieg ich dafür Punkteabzug???
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon HE » 03.02.08 12:21

proxylittle hat geschrieben:ok.. mal ganz grooooßes:

hääääääääääää?????


Genau. Warum einfach, wenn man es auch schwer haben kann.

proxylittle hat geschrieben:Darf ich denn jetzt Listen verwenden?


Ja, du darfst sie verwenden. Nein, du sollst sie eigentlich nicht verwenden und nein, sie sind für die Aufgabe nicht nötig. Die Übungen sind mit den Mitteln der Vorlesung vom Freitag problemlos lösbar (wie auch alle anderen Übungen...)

proxylittle hat geschrieben:Weil wenn ich was anderes, z.b. Fakten machen will komm ich vollkommen durch...


Das hätte dir vielleicht ein Hinweis sein sollen.

proxylittle hat geschrieben:Soll ich die Fakten einfach so schreiben:
linie1(berghotel,aussichtspunkt,hochsteg,niedersteg,burg).


Nein. Die Fakten sind, dass zwei Stationen über eine Linie miteinander verbunden sind, nicht was du da geschrieben hast.
Benutzeravatar
HE
 
Beiträge: 453
Registriert: 09.03.07 12:20
Wohnort: Aachen
Studiert seit: WS 06/07
Anwendungsfach: Mathe

Beitragvon mirko » 03.02.08 12:29

proxylittle hat geschrieben:Oder darf ich die ersten paar aufgaben jetzt mit meiner Liste so lassen???

Krieg ich dafür Punkteabzug???


grundsätzlich gibt's keine punktabzug, solange du dich an die aufgabenstellung hälst. wenn also die beispielanfragen in der syntax in der sie da stehen funktionieren, ist im prinzip alles ok.

falls du es doch umstellen willst, kann ich dir nun den tipp geben, bei der a dein gehirn auszuschalten und die fakten hinzuschreiben :P - guck dir die anfragen an, und such dir die trivialste möglichkeit, diese zu erfüllen. es kann schon sein, dass du dann über 10 zeilen brauchst, aber so war es gedacht...
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon proxylittle » 03.02.08 13:42

wenn also die beispielanfragen in der syntax in der sie da stehen funktionieren, ist im prinzip alles ok


Code: Alles auswählen
nachfolger(berghotel,aussichtsturm,linie1). 
GEHT SO! NICHT

nachfolger(berghotel,aussichtsturm,[berghotel,aussichtsturm,...]).
GEHT


ist das obere dann falsch und nicht an der Aufgabenstellung??

und wie mache ich aus:
Code: Alles auswählen
test(a).
test(b).
test(c).
test(d).
test(e).

dann sowas wie test(a,b,c,d,e). das ich das dann in meiner funktion aufgreifen kann und es als cons(x,y,z,...) arbeitet mit head und tail?
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Beitragvon theTux » 03.02.08 13:59

proxylittle hat geschrieben:
Code: Alles auswählen
nachfolger(berghotel,aussichtsturm,linie1). 
GEHT SO! NICHT

Geht. Man muss es nur richtig machen... D.h. du musst die Fakten entsprechend der Aufgabenstellung zusammenstellen und die passenden Regeln dazu schreiben.

und wie mache ich aus:
[...]
dann sowas wie test(a,b,c,d,e). das ich das dann in meiner funktion aufgreifen kann und es als cons(x,y,z,...) arbeitet mit head und tail?

Hä? Was auch immer du damit bezwecken willst - lass' es sein. Und vergiss' bitte die Listen - ich weiß nicht wie du darauf kommst, die zu benutzen..?
Stur lächeln und... oh, falscher Pinguin.
Benutzeravatar
theTux
 
Beiträge: 577
Registriert: 15.01.06 16:41

Beitragvon mirko » 03.02.08 14:02

theTux hat geschrieben:
proxylittle hat geschrieben:
Code: Alles auswählen
nachfolger(berghotel,aussichtsturm,linie1). 
GEHT SO! NICHT

Geht. Man muss es nur richtig machen...


er bezog sich auf seinen code.

@proxylittle: so ist es dann nicht richtig - mach es besser ohne listen, das ist eigentlich total trivial...
mirko
 
Beiträge: 1032
Registriert: 22.10.06 18:33
Studiert seit: WS 12/13

Beitragvon proxylittle » 03.02.08 14:48

ok ich hab jetzt mal meinen code vereinfacht(bzw. verändert) um zu zeigen wos bei mir hapert:
Code: Alles auswählen
nf(X,cons(X,_)).
nf(X,cons(H,T)):- nf(X,cons(T)).


so... das problem hierbei ist, das er keine Abfragen nimmt wie:
Code: Alles auswählen
nf(X,linie1). -> No

nf(blaa,linie1(blaa)). -> No

nf(blaa,linie1(blaa,_)). -> No

außer:
Code: Alles auswählen
nf(blaa,cons(blaa)). -> Yes


soll ich diese cons(H,T) abfragen dann lassen? weil sonst wüsst ich nicht wie der das erste element mit dem zweiten usw. vergleicht.

ein weiteres Problem liegt darin, dass ich nicht weiß wie man sowas in ein fakt linie1. zusammenfasst.

Code: Alles auswählen
er kennt weder:
linie1 :- a, b ,c,... .

noch

linie1 :- linie1(X).


das womit er mir immer rausrückt wenn ich nur linie1 abfrage ist Yes

Vielleicht betrachte ich das sowas von falsch oder erkenne das einfachste hierbei absolut nicht... aber wie gehe ich denn hier vor???

Außerdem ist linie1, linie2 blaa das aufzustellen doch nicht mit punkten versehen... also könnt ihr mir doch ein codebeispiel oder dergleichen als starthilfe geben. Weil in den Vorlesungsfolien hab ich auch nix gescheites gefunden. Bestimmt hab ich Tomaten aufn Augen..
Code: Alles auswählen
<!--   No Comment   -->
Benutzeravatar
proxylittle
 
Beiträge: 106
Registriert: 28.01.08 15:38
Wohnort: Aachen (Köln Wochenende)

Nächste

Zurück zu Praktische Informatik