2010-12-29 15 views
1

Eine Datenbank zur Verfügung, das alle diese Informationen in Form der folgenden PROLOG Regeln und Fakten kodiert:Prologs logische Probleme

+0

Ich habe Fragen 1 und 2 getan ... aber ich bin mir nicht sicher, wie man die anderen macht. = | – Giulia

Antwort

-1

diejenigen Versuchen:

%Question1 
isUniversity(X) :- rank(X , _). 
isUniversity(X) :- students(X , _). 
isUniversity(X) :- group_1994(X). 
isUniversity(X) :- group_russell(X). 
isUniversity(X) :- expense(X,_). 

%Question2 
isRankedHigher(X , Y) :- 
    rank(X , R1), 
    rank(Y , R2), 
    R1 < R2. 

%Question3 
listInOrder([_]):-!. 
listInOrder([X , Y | Z]):- 
    isRankedHigher(X , Y), 
    listInOrder([Y|Z]). 

%Question7 
total([] , Acc , Acc). 
total([X | Xs] , L , Acc):- 
    students(X , Y) , 
    L1 is L + Y , 
    total(Xs , L1 , Acc). 
%Use this one for Q7 
add_ap_total(List , X) :- total(List , 0 , X). 

Es ist schon lange her, ich prolog - ed aber ich denke, dass diese arbeiten. Versuchen Sie, mit Listen zu arbeiten und viele Übungen zu machen. Denken Sie daran, dass die Reihenfolge der Klauseln wichtig ist. Wenn du Informatik studierst und mit ein wenig Grundwissen abschließen möchtest, empfehle ich dir, in Prolog zu schmelzen, da es eine gute Übung für Rekursion ist. Learn C auch;)

Viel Spaß

+0

Ich denke, die Frage 3 muss bearbeitet werden. Das funktioniert, aber müssen wir nicht vergleichen, um zu sehen, ob der Kopf höher als der Schwanz ist? (Ich bin ziemlich gut mit der Programmierung in Python und C, aber diese "Rekursion" ist so verwirrend.) – Giulia

+0

@Giulia, oh ich verstehe. Ja, das war ein Fehler. Da Sie Que2 implementiert haben, ist es leicht, diesen Fehler zu finden. – Muggen

+0

isrank (A, B): - \t rank (A, X), \t Rang (B, Y), \t X Giulia