App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Prolog
- Ersteller 123456
- Erstellt am
Hallo,
Könnte mir einer von euch ein Beispielprogramm von Prolog bezüglich eines Stammbaumes mit den dazugehörigen Regeln zusenden oder hier Posten. Wär echt nett brauch das nämlich zu Freitag (die Regeln bis Urgroßeltern über schwager usw.) schon mal danke im Vorraus.
Könnte mir einer von euch ein Beispielprogramm von Prolog bezüglich eines Stammbaumes mit den dazugehörigen Regeln zusenden oder hier Posten. Wär echt nett brauch das nämlich zu Freitag (die Regeln bis Urgroßeltern über schwager usw.) schon mal danke im Vorraus.
Es gibt da ein chinesisches Sprichwort... (etc. pp. - hat sicher jeder schonmal gehört)
Wozu brauchst du das denn? Das Progger-Forum ist nämlich nicht da um den Leuten ihre Hausaufgaben oder ähnliche Sachen abzunehmen. Noch dazu, da das Beispiel so verdammt einfach ist.
Wozu brauchst du das denn? Das Progger-Forum ist nämlich nicht da um den Leuten ihre Hausaufgaben oder ähnliche Sachen abzunehmen. Noch dazu, da das Beispiel so verdammt einfach ist.
Hy weiß ich selbst und ich hab mich in einem Anderen Forum zu dem selben Them auch schon mit einem verständigt
ww.linux-web.de/thread.php?postid=57620#post57620
(darf noch nicht linken)
wäre Trotzdem nett wenn es so ein Programm bekommen würde
ww.linux-web.de/thread.php?postid=57620#post57620
(darf noch nicht linken)
wäre Trotzdem nett wenn es so ein Programm bekommen würde
Wenn du schon ein Prog geschrieben hast, dann poste es doch mal. Ansonsten kann ich mich nämlich nur der 1. Antwort in dem von dir verlinkten Thread anschließen - wir machen doch nicht deine Hausaufgaben.
Wie gesagt, poste was du geschrieben hast.
Wie gesagt, poste was du geschrieben hast.
maennlich(maik).
maennlich(axel).
maennlich(horst).
maennlich(peter).
maennlich(paul).
maennlich(horst).
weiblich(ute).
weiblich(jana).
weiblich(petra).
weiblich(anna).
weiblich(julia).
weiblich(susi).
weiblich(julia2).
eltern(maik,axel,ute).
eltern(horst,peter,jana).
eltern(petra,sven,anna).
eltern(julia,paul,susi).
eltern(julia2,paul,susi).
eltern(horst2,peter,jana).
verheiratet(axel,ute).
verheiratet(ute,axel).
verheiratet(peter,jana).
verheiratet(jana,peter.
verheiratet(sven,anna).
verheiratet(anna,sven).
verheiratet(paul,susi).
verheiratet(susi,paul).
mutter(Ki,Ma):- eltern(Ki,Pa,Ma), weiblich(Ma).
vater(Ki,Pa):- eltern(Ki,Pa,Ma), maennlich(Pa).
sohn(Pa,Ma,Ki):- eltern(Ki,Pa,Ma), maennlich(Ki).
tochter(Pa,Ma,Ki):- eltern(Ki,Pa,Ma), weiblich(Ki).
Das war der Anfang hat man mir aber gesagt es mach alles zu kompliziert wenn man es 3 Teilig macht (eltern) also
maennlich(horst).
usw.
weiblich(susi).
usw.
elternteil(susi,horst).
usw.
verheiratet(horst,susi).
usw.
#Regeln#
vater (Ki, Va) :- elternteil(Ki, Va), maennlich(Va).
mutter (Ki, Ma) :- elternteil(Ki, Ma), weiblich(Ma).
eltern (Ki, El) :- elternteil(Ki, El).
Opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X).
Oma(Ek, Om) :- mutter(Y, Om), elternteil(Ek, Y).
UOpa(UEk, UOp) :- opa(X, UOp), elternteil(UEk, X).
UOma(UEk, UOm) :- Oma(X, UOm), elternteil(UEk, X).
kind(Ki, Et) :- elternteil(Ki, Et).
bruder(Gs, Br) :- maennlich(Br), elternteil(Br, X), elternteil(Gs, X).
schwester(Gs, Schw) :- weiblich(Schw), elternteil(Schw, Y), elternteil(Gs, Y).
geschwister(Gs, Gss) :- elternteil(Gs, Z), elternteil(Gss, Z).
onkel(Ki, ):- elternteil(
Verdammt
Onkel/Tante
Schwager/Schwägerin
Enkel/Urenkel
Cousin
bekomm ich noch nicht hin
maennlich(axel).
maennlich(horst).
maennlich(peter).
maennlich(paul).
maennlich(horst).
weiblich(ute).
weiblich(jana).
weiblich(petra).
weiblich(anna).
weiblich(julia).
weiblich(susi).
weiblich(julia2).
eltern(maik,axel,ute).
eltern(horst,peter,jana).
eltern(petra,sven,anna).
eltern(julia,paul,susi).
eltern(julia2,paul,susi).
eltern(horst2,peter,jana).
verheiratet(axel,ute).
verheiratet(ute,axel).
verheiratet(peter,jana).
verheiratet(jana,peter.
verheiratet(sven,anna).
verheiratet(anna,sven).
verheiratet(paul,susi).
verheiratet(susi,paul).
mutter(Ki,Ma):- eltern(Ki,Pa,Ma), weiblich(Ma).
vater(Ki,Pa):- eltern(Ki,Pa,Ma), maennlich(Pa).
sohn(Pa,Ma,Ki):- eltern(Ki,Pa,Ma), maennlich(Ki).
tochter(Pa,Ma,Ki):- eltern(Ki,Pa,Ma), weiblich(Ki).
Das war der Anfang hat man mir aber gesagt es mach alles zu kompliziert wenn man es 3 Teilig macht (eltern) also
maennlich(horst).
usw.
weiblich(susi).
usw.
elternteil(susi,horst).
usw.
verheiratet(horst,susi).
usw.
#Regeln#
vater (Ki, Va) :- elternteil(Ki, Va), maennlich(Va).
mutter (Ki, Ma) :- elternteil(Ki, Ma), weiblich(Ma).
eltern (Ki, El) :- elternteil(Ki, El).
Opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X).
Oma(Ek, Om) :- mutter(Y, Om), elternteil(Ek, Y).
UOpa(UEk, UOp) :- opa(X, UOp), elternteil(UEk, X).
UOma(UEk, UOm) :- Oma(X, UOm), elternteil(UEk, X).
kind(Ki, Et) :- elternteil(Ki, Et).
bruder(Gs, Br) :- maennlich(Br), elternteil(Br, X), elternteil(Gs, X).
schwester(Gs, Schw) :- weiblich(Schw), elternteil(Schw, Y), elternteil(Gs, Y).
geschwister(Gs, Gss) :- elternteil(Gs, Z), elternteil(Gss, Z).
onkel(Ki, ):- elternteil(
Verdammt
Onkel/Tante
Schwager/Schwägerin
Enkel/Urenkel
Cousin
bekomm ich noch nicht hin
Hmm.... muss mich auch erstmal wieder in Prolog reindenken... ist schon eine Weile her, und so viel hab ich damit auch net gemacht.
Ich denk das mit dem eltern war schon nicht schlecht, aber mach das trotzdem besser mit einer Verbindung. Also so:
maennlich(maik).
maennlich(axel).
maennlich(horst).
maennlich(peter).
maennlich(paul).
maennlich(horst).
weiblich(ute).
weiblich(jana).
weiblich(petra).
weiblich(anna).
weiblich(julia).
weiblich(susi).
weiblich(julia2).
eltern(maik,axel).
eltern(maik,ute).
eltern(horst,jana).
eltern(horst,peter).
etc. pp.
Daraus ergäbe sich dann das:
mutter(Ki,P):- eltern(Ki,P), weiblich(P).
vater(Ki,P):- eltern(Ki,P), maennlich(P).
Dann brauchst du aber noch die Beziehung Schwester/Bruder. Schwester wenn weiblich und selbe Eltern wie jemand anders, Bruder wenn männlich und selbe Eltern wie jemand anders. Weiterführend könnte man noch Halbbruder/Halbschwester implementieren.
Ich merk gerade, dass ich die Schreibweise nimmer drauf hab, muss mich dazu erstmal belesen.
Onkel sind dann zB. alle Brüder der Elternteile, Tante alle Schwestern der Elternteile. Cousin Söhne der Brüder/Schwestern der Elternteile, Cousine Töchter der Brüder/Schwestern der Elternteile.
Ich denk das mit dem eltern war schon nicht schlecht, aber mach das trotzdem besser mit einer Verbindung. Also so:
maennlich(maik).
maennlich(axel).
maennlich(horst).
maennlich(peter).
maennlich(paul).
maennlich(horst).
weiblich(ute).
weiblich(jana).
weiblich(petra).
weiblich(anna).
weiblich(julia).
weiblich(susi).
weiblich(julia2).
eltern(maik,axel).
eltern(maik,ute).
eltern(horst,jana).
eltern(horst,peter).
etc. pp.
Daraus ergäbe sich dann das:
mutter(Ki,P):- eltern(Ki,P), weiblich(P).
vater(Ki,P):- eltern(Ki,P), maennlich(P).
Dann brauchst du aber noch die Beziehung Schwester/Bruder. Schwester wenn weiblich und selbe Eltern wie jemand anders, Bruder wenn männlich und selbe Eltern wie jemand anders. Weiterführend könnte man noch Halbbruder/Halbschwester implementieren.
Ich merk gerade, dass ich die Schreibweise nimmer drauf hab, muss mich dazu erstmal belesen.
Onkel sind dann zB. alle Brüder der Elternteile, Tante alle Schwestern der Elternteile. Cousin Söhne der Brüder/Schwestern der Elternteile, Cousine Töchter der Brüder/Schwestern der Elternteile.
die Regeln für Burder Schwester und so hab ich schon
#Regeln#
vater (Ki, Va) :- elternteil(Ki, Va), maennlich(Va).
mutter (Ki, Ma) :- elternteil(Ki, Ma), weiblich(Ma).
eltern (Ki, El) :- elternteil(Ki, El).
Opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X).
Oma(Ek, Om) :- mutter(Y, Om), elternteil(Ek, Y).
UOpa(UEk, UOp) :- opa(X, UOp), elternteil(UEk, X).
UOma(UEk, UOm) :- Oma(X, UOm), elternteil(UEk, X).
kind(Ki, Et) :- elternteil(Ki, Et).
bruder(Gs, Br) :- maennlich(Br), elternteil(Br, X), elternteil(Gs, X).
schwester(Gs, Schw) :- weiblich(Schw), elternteil(Schw, Y), elternteil(Gs, Y).
geschwister(Gs, Gss) :- elternteil(Gs, Z), elternteil(Gss, Z).
onkel(Ki, ):- elternteil(
Verdammt
Onkel/Tante
Schwager/Schwägerin
Enkel/Urenkel
Cousin
#Regeln#
vater (Ki, Va) :- elternteil(Ki, Va), maennlich(Va).
mutter (Ki, Ma) :- elternteil(Ki, Ma), weiblich(Ma).
eltern (Ki, El) :- elternteil(Ki, El).
Opa (Ek, Op) :- vater(X, Op), elternteil(Ek, X).
Oma(Ek, Om) :- mutter(Y, Om), elternteil(Ek, Y).
UOpa(UEk, UOp) :- opa(X, UOp), elternteil(UEk, X).
UOma(UEk, UOm) :- Oma(X, UOm), elternteil(UEk, X).
kind(Ki, Et) :- elternteil(Ki, Et).
bruder(Gs, Br) :- maennlich(Br), elternteil(Br, X), elternteil(Gs, X).
schwester(Gs, Schw) :- weiblich(Schw), elternteil(Schw, Y), elternteil(Gs, Y).
geschwister(Gs, Gss) :- elternteil(Gs, Z), elternteil(Gss, Z).
onkel(Ki, ):- elternteil(
Verdammt
Onkel/Tante
Schwager/Schwägerin
Enkel/Urenkel
Cousin
Funktioniert Bruder/Schwester etc. denn auch schon?
Onkel würde ich zB. so machen:
onkel(Ki, Ok) :- eltern(Ki, X), bruder(Ok, X)
geschwister ist imho nicht richtig definiert, es gibt ja auch gebrüder .
Die Preisfrage ist aber erstmal, ob bis zu bruder und schwester alles funktioniert.
Onkel würde ich zB. so machen:
onkel(Ki, Ok) :- eltern(Ki, X), bruder(Ok, X)
geschwister ist imho nicht richtig definiert, es gibt ja auch gebrüder .
Die Preisfrage ist aber erstmal, ob bis zu bruder und schwester alles funktioniert.
lk13_informatik
Redshirt
- Mitglied seit
- 01.11.2005
- Beiträge
- 1
- Renomée
- 0
Wir haben den Auftrag bekommen, Aufgaben vom 23.Bundeswettbewerb Informatik in Prolog-Schreibweise zu lösen. Uns ist es gelungen die Aufgabe tratsch ... zu lösen , jedoch stellt die aufgabe 2 (Klasse Arbeit) ein unüberwindbares Hindernis dar , was zum teil auch an der spärlichen Informationsweitergabe unseres Lehrers an uns liegen mag.
daher bitten wir um höflichst um Hilfe und Beistand um diese schier unmögliche krise zu bewältigen.
Mit freundlichen Grüßen
der Informatik LK 13 von der Aussenstelle des Goethe Gymnasiums
>>siehe Homepage BWI<<
dieser Lösungsansatz konnte uns zwar logisch aber leider nicht im syntax helfen
daher bitten wir um höflichst um Hilfe und Beistand um diese schier unmögliche krise zu bewältigen.
Mit freundlichen Grüßen
der Informatik LK 13 von der Aussenstelle des Goethe Gymnasiums
>>siehe Homepage BWI<<
dieser Lösungsansatz konnte uns zwar logisch aber leider nicht im syntax helfen
So, hab eine Lösung. Bücher 6, 7, 1 und 4. Die Regeln dafür lassen sich in Prolog implementieren, zum Teil hab ich das aber noch per Hand über Abfragen gemacht. Bin in Prolog noch nicht so ganz fit.
Auf jeden Fall musst du an das Problem herangehen, indem du suchst welche Bücher du mindestens brauchst.
Auf jeden Fall musst du an das Problem herangehen, indem du suchst welche Bücher du mindestens brauchst.
Puh, hat eine Weile gedauert aber ich hab was. Ich hab die Datenbank mal einzeln aufgestellt, damit die reverses bessser gehen:
Geht etwas durcheinander. Die Abfrage get_min_list(L) liefert dann die beiden möglichen Ergebnisse, nämlich [1, 4, 6, 7] und [1, 3, 4, 6] bzw. das erste gleich 2mal (wieso ist mir jetzt egal).
Für eine Schule dürften das zu hohe Anforderungen sein. Ach ja, das ist GNU Prolog, \+ bedeutet not. Die Überlegung ist ganz einfach, aber es dauert mitunter eine Weile erstmal darauf zu kommen - es wird für jede Teilmenge der Menge aller Bücher [1, 2, ..., 8] getestet, ob diese alle nicht bekannten Aufgaben enthält. Dann werden aus der Menge aller Lösungen des Problems die kürzesten ausgegeben.
Code:
% what works exist
work(1).
work(2).
work(3).
work(4).
work(5).
work(6).
work(7).
work(8).
work(9).
work(10).
work(11).
work(12).
work(13).
work(14).
work(15).
work(16).
work(17).
work(18).
work(19).
% known works
known(1).
known(2).
known(4).
known(6).
known(7).
known(8).
known(10).
known(12).
known(14).
known(16).
known(18).
known(20).
% unknown works
unknown(A) :- work(A), \+known(A).
% which book contains which work
contains(1, 1).
contains(1, 9).
contains(1, 12).
contains(1, 15).
contains(1, 18).
contains(2, 2).
contains(2, 3).
contains(2, 5).
contains(2, 14).
contains(2, 15).
contains(3, 4).
contains(3, 7).
contains(3, 13).
contains(3, 16).
contains(3, 18).
contains(4, 5).
contains(4, 11).
contains(4, 16).
contains(4, 19).
contains(4, 20).
contains(5, 6).
contains(5, 8).
contains(5, 11).
contains(5, 14).
contains(5, 15).
contains(6, 1).
contains(6, 3).
contains(6, 6).
contains(6, 17).
contains(6, 20).
contains(7, 2).
contains(7, 8).
contains(7, 10).
contains(7, 13).
contains(7, 19).
contains(8, 4).
contains(8, 9).
contains(8, 10).
contains(8, 12).
contains(8, 16).
% true, if W is contained by at least one book in list, false else
contains_list([Bh|Bt], W) :- contains(Bh, W) ; contains_list(Bt, W).
% true, if contains_list is true for each work in list
check_list(X, []) :- \+(X=[]).
check_list(B, [Wh|Wt]) :- contains_list(B, Wh), check_list(B, Wt).
check(Len) :- setof(X, (work(X), unknown(X)), Bag), sublist(L, [1, 2, 3, 4, 5, 6, 7, 8]), length(L, Len), check_list(L, Bag).
get_min_list(L) :- setof(X, check(X), Bag), min_list(Bag, A),
setof(Y, (work(Y), unknown(Y)), Bag1), sublist(L, [1, 2, 3, 4, 5, 6, 7, 8]), check_list(L, Bag1), length(L, A).
Geht etwas durcheinander. Die Abfrage get_min_list(L) liefert dann die beiden möglichen Ergebnisse, nämlich [1, 4, 6, 7] und [1, 3, 4, 6] bzw. das erste gleich 2mal (wieso ist mir jetzt egal).
Für eine Schule dürften das zu hohe Anforderungen sein. Ach ja, das ist GNU Prolog, \+ bedeutet not. Die Überlegung ist ganz einfach, aber es dauert mitunter eine Weile erstmal darauf zu kommen - es wird für jede Teilmenge der Menge aller Bücher [1, 2, ..., 8] getestet, ob diese alle nicht bekannten Aufgaben enthält. Dann werden aus der Menge aller Lösungen des Problems die kürzesten ausgegeben.
ich weiß nicht, ob hier noch leute reinschauen, aber ich versuchs trotzdem mal =P
ich habe in prolog ein programm geschrieben, das, für mich X mal würfelt und dann die ergebnisse in einer liste (W) ausgibt. (beispiel: zwurf(150,A)=>(17,26,28,19,32,28).
jetzt möchte ich ein prädikat hinzufügen, das nach X mal würfeln die relativen häufigkeiten (in %) ausgibt, eine 1,2,...,6 zu würfeln. die frage ist da nur.... WIE GEHT DAS?
ich stell mir das ergebnis dann ungefähr so vor:
rhkt(30000,U) ergibt U=(16.5633, 16.5667, 16.6267, 17.0367, 16.7333, 16.4733).
ich wäre dankbar für schnelle hilfe.
mfg
lolcifer
ich habe in prolog ein programm geschrieben, das, für mich X mal würfelt und dann die ergebnisse in einer liste (W) ausgibt. (beispiel: zwurf(150,A)=>(17,26,28,19,32,28).
jetzt möchte ich ein prädikat hinzufügen, das nach X mal würfeln die relativen häufigkeiten (in %) ausgibt, eine 1,2,...,6 zu würfeln. die frage ist da nur.... WIE GEHT DAS?
ich stell mir das ergebnis dann ungefähr so vor:
rhkt(30000,U) ergibt U=(16.5633, 16.5667, 16.6267, 17.0367, 16.7333, 16.4733).
ich wäre dankbar für schnelle hilfe.
mfg
lolcifer
Ähnliche Themen
- Antworten
- 2
- Aufrufe
- 1K
- Antworten
- 11
- Aufrufe
- 955
- Antworten
- 10
- Aufrufe
- 744
- Antworten
- 899
- Aufrufe
- 46K
- Antworten
- 7
- Aufrufe
- 1K