Prolog Programmierung < Sonstige < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Aufgabe | "An einer Geburtstagsparty nehmen genau 7 Ehepaare teil. Die Familiennamen der Männer
sind: Anders, Bauer, Conrad, Dahlke, Ebert, Frey und Göbel. Die Frauen heißen mit
Vornamen Hilde, Inge, Karin, Luise, Maria, Nora und Olga.
Im Verlaufe des Abends tanzte Herr Anders mit Inge und Luise, Herr Frey mit Maria und
Luise, Herr Göbel mit Inge und Nora, Herr Conrad mit Inge, Herr Dahlke mit Luise und Herr
Ebert mit Nora.
Später wurde zu viert Domino gespielt. Zuerst beteiligten sich Herr Conrad, Herr Anders,
Nora und Olga am Spiel. Die beiden männlichen Mitspieler wurden nach einer Weile von den
Herren Dahlke und Frey abgelöst. Zum Schluss lösten Hilde und Inge die beiden Frauen ab.
Merkwürdigerweise hat kein Ehemann mit seiner Frau getanzt oder mit ihr gemeinsam am Dominotisch gesessen.
Schreibe ein Prologprogramm, welches für Dich herausfindet, wer mit wem verheiratet ist! Das Prädikat verheiratet" soll in der Form einer Regel definiert werden, so dass die Frage verheiratet(X, Y) " alle notwendigen Antworten liefert!"
|
grüss Gott!
Ich bitte um eure Hilfeleistung.
Ich habe versucht den Lösungsweg zu finden:
Ich habe Prädikate geschrieben:
w(hilde).
w(inge).
w(karin).
w(luise).
w(maria).
w(nora).
w(olga).
m(anders).
m(bauer).
m(conrad).
m(dahlke).
m(ebert).
m(frey).
m(gobel).
t(anders,inge).
t(anders,luise).
t(frey,maria).
t(frey,luise).
t(gobel,inge).
t(gobel,nora).
t(conrad,inge).
t(dahlke,luise).
t(ebert,nora).
t(conrad,nora).
t(conrad,olga).
t(anders,nora).
t(anders,olga).
t(dahlke,nora).
t(dahlke,olga).
t(frey,nora).
t(frey,olga).
t(dahlke,hilde).
t(dahlke,inge).
t(frey,inge).
t(frey,hilde).
Das bringt aber mich nicht weiter, ich hab mir überlegt, verheiratet(X, Y) " soll mit t(X;Y) in Verbimdung gesetzt werden, meine Vermutung kann aber auch falsch sein. Ich habe mir den Kopf über diese Aufgabe zerbrochen. Ich habe nur die Hoffnung, dass ihr mir damit helft. Danke im vorraus
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:20 Mo 04.02.2008 | Autor: | Gilga |
Es fehlen die Prozedurklauseln
t(anders,olga) => nicht verheiratet(anders,olga)
.......
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:58 Di 05.02.2008 | Autor: | webspacer |
ich habe nun die Regeln entworfen, ich weiß, aber nicht, wie ich verheiratet(X;Y) durch nicht verheiratet ausdrucken soll. Das soll genau das Umgekehrte sein, der Ausdruck in Prolog fehlt mir aber:
nichtverheiratet(X,Y):- t(X,Y).
verheiratet(X;Y):- m(X), w(Y),
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:24 Di 05.02.2008 | Autor: | webspacer |
Ich habe zwei Programme entworfen. Sie laufen aber nicht. Wo ist der Fehler? Helfen Sie mir bitte!
1. Variante:
w(hilde).
w(inge).
w(karin).
w(luise).
w(maria).
w(nora).
w(olga).
m(anders).
m(bauer).
m(conrad).
m(dahlke).
m(ebert).
m(frey).
m(gobel).
t(X,Y):- w(X), m(Y).
verheiratet(X,Y):- t(X,Y),
t(anders,F1), F1(StrichGleichheitszeichen)nora, F1(StrichGleichheitszeichen)olga, F1(Strich Gleichheitszeichen)inge, F1(Strich Gleichheitszeichen)luise,
t(conrad,F2), F2(Strich Gleichheitszeichen)olga, F2(StrichGleichheitszeichen)nora, F2(Strich Gleichheitszeichen)inge, F1(Strich Gleichheitszeichen)F2,
t(frey,F3), F3(StrichGleichheitszeichen)maria, F3(StrichGleichheitszeichen)luise, F3(StrichGleichheitszeichen)nora, F3(StrichGleichheitszeichen)olga, F3(StrichGleichheitszeichen)inge, F3(StrichGleichheitszeichen)hilde, F1(StrichGleichheitszeichen)F3, F2(StrichGleichheitszeichen)F3,
t(gobel,F4), F4(StrichGleichheitszeichen)inge, F4(StrichGleichheitszeichen)nora, F4(StrichGleichheitszeichen)F1, F4(StrichGleichheitszeichen)F2, F4(StrichGleichheitszeichen)F3,
t(dahlke,F5), F5(StrichGleichheitszeichen)luise, F5(StrichGleichheitszeichen)olga, F5(StrichGleichheitszeichen)nora, F5(StrichGleichheitszeichen)F1, F5(StrichGleichheitszeichen)F2, F5(StrichGleichheitszeichen)F3, F5(StrichGleichheitszeichen)F4,
t(ebert,F6), F6(StrichGleichheitszeichen)nora, F6(StrichGleichheitszeichen)F1, F6(StrichGleichheitszeichen)F2, F6(StrichGleichheitszeichen)F3, F6(StrichGleichheitszeichen)F4, F6(StrichGleichheitszeichen)F5,
t(bauer,F7), F7(StrichGleichheitszeichen)F1, F7(StrichGleichheitszeichen)F2, F7(StrichGleichheitszeichen)F3, F7(StrichGleichheitszeichen)F4, F7(StrichGleichheitszeichen)F5, F7(StrichGleichheitszeichen)F6.
2. Variante:
w(hilde).
w(inge).
w(karin).
w(luise).
w(maria).
w(nora).
w(olga).
m(anders).
m(bauer).
m(conrad).
m(dahlke).
m(ebert).
m(frey).
m(gobel).
t(X,Y):- w(X), m(Y).
loesung(Anders,Bauer,Conrad,Dahlke,Ebert,Frey,Goebel):-
w(Anders), Anders(StrichGleichheitszeichen)inge, Anders(StrichGleichheitszeichen)luise, Anders(StrichGleichheitszeichen)nora, Anders(StrichGleichheitszeichen)olga,
w(Bauer), Bauer(StrichGleichheitszeichen)Anders,
w(Conrad), Conrad(StrichGleichheitszeichen)inge, Conrad(StrichGleichheitszeichen)Anders, Conrad(StrichGleichheitszeichen)Bauer,
w(Dahlke), Dahlke(StrichGleichheitszeichen)luise, Dahlke(StrichGleichheitszeichen)nora, Dahlke(StrichGleichheitszeichen)olga, Dahlke(StrichGleichheitszeichen)hilde, Dahlke(StrichGleichheitszeichen)inge, Dahlke(StrichGleichheitszeichen)Anders, Dahlke(StrichGleichheitszeichen)Bauer, Dahlke(StrichGleichheitszeichen)Conrad,
w(Ebert), Ebert(StrichGleichheitszeichen)nora, Ebert(StrichGleichheitszeichen)Anders, Ebert(StrichGleichheitszeichen)Bauer, Ebert(StrichGleichheitszeichen)Conrad, Ebert(StrichGleichheitszeichen)Dahlke,
w(Frey), Frey(StrichGleichheitszeichen)maria, Frey(StrichGleichheitszeichen)luise, Frey(StrichGleichheitszeichen)nora, Frey(StrichGleichheitszeichen)olga, Frey(StrichGleichheitszeichen)hilde, Frey(StrichGleichheitszeichen)inge, Frey(StrichGleichheitszeichen)Anders, Frey(StrichGleichheitszeichen)Bauer, Frey(StrichGleichheitszeichen)Conrad, Frey(StrichGleichheitszeichen)Dahlke, Frey(StrichGleichheitszeichen)Ebert,
w(Goebel), Goebel(StrichGleichheitszeichen)inge, Goebel(StrichGleichheitszeichen)nora, Goebel(StrichGleichheitszeichen)Anders, Goebel(StrichGleichheitszeichen)Bauer, Goebel(StrichGleichheitszeichen)Conrad, Goebel(StrichGleichheitszeichen)Dahlke, Goebel(StrichGleichheitszeichen)Ebert, Goebel(StrichGleichheitszeichen)Frey.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 02:10 Mi 06.02.2008 | Autor: | Zneques |
Hallo,
Du solltest das Gesammte mit dem Tanzen und Domino als Fakten hinzufügen.
nichtverh(anders,luise).
usw.
Dann dürfte dir die Regel für verheiratet deutlich leichter fallen.
Ciao.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:33 Mi 06.02.2008 | Autor: | webspacer |
Hallo Zneques,
ich habe auch das gemacht, die richtige Regel mit verheiratet(X;Y) fallt mir nicht ein. Können Sie noch einen weiteren Tipp geben, wie ich die Wissensbasis aus der Aufgabe in die Regel umsetzen kann? Danke für die Beteiligung.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:28 Do 07.02.2008 | Autor: | Zneques |
Das sieht schon ganz gut aus.
Soweit ich mich erinnere Funktioniert das =/= nur mit Zahlen. Für logische Verneinung müsste eigentlich "not" zu benutzen sein.
D.h. er findet keine Fakten/Regeln, dass die Aussage stimmt.
verheiratet(X,Y):- nichtverh(X,Z), w(Y), m(X), not(Y=Z).
Besser dürfte jedoch sein wenn man erstmal jedes Paar m-w als mögliches Ehepaar betrachtet :
verheiratet(X,Y):- m(X), w(Y), not(nichtverh(X,Y)).
nun sucht er erst nach einen Mann X, dann die Frau Y und kontrolliert dann, ob es Indizien gegen die Heirat gibt.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:20 Mi 06.02.2008 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|