Ich habe versucht, den Umfang eines Landes in Prolog zu finden.Prolog - Summe der Listenmitglieder
Ich habe die fertige Prädikat
borders(Country1, Country2, Length)
und
setof(Item, Condition, Set)
, die eine Liste aller Elemente in die Menge, die die Bedingung erfüllen gibt.
Um den Umfang erhalte ich versucht, dies zu tun:
circumference(C, Country) :-
setof(X, borders(Country,_,X), Set),
sum_list(Set,C).
sum_list([], 0).
sum_list([H|T], C) :-
sum_list(T, Rest),
C is H + Rest.
... aber die Ausgabe erhalte ich nur die Länge zwischen den beiden Ländern in der Grenz Prädikat.
Mein Test:
?– circumference(C,angola).
C = 201 ;
C = 1376 ;
C = 2511 ;
C = 1110.
Regeln:
borders(angola,namibia,1376).
borders(angola,congo,201).
borders(angola,zambia,1110).
borders(angola,zaire,2511).
Warum nicht C
die Summe dieser Zahlen werden?
Warum nicht 'findall/3'? Warum suchst du nicht auch nach 'border (_, Country, X)'? –
Ich möchte die Länder finden, die ein spezifisches Land begrenzen, was mir nur unnötige Werte geben würde? –
finden alle behoben das Problem, danke! –