J'ai essayé de trouver la circonférence d'un pays à Prolog.Prolog - somme des membres de la liste
J'ai le prédicat fini
borders(Country1, Country2, Length)
et
setof(Item, Condition, Set)
qui donne une liste de tous les éléments dans l'ensemble qui remplissent la condition.
Pour obtenir la circonférence que j'ai essayé de faire ceci:
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.
... mais la sortie que je reçois est que la longueur entre deux pays dans le prédicat frontière.
Mon test:
?– circumference(C,angola).
C = 201 ;
C = 1376 ;
C = 2511 ;
C = 1110.
règles:
borders(angola,namibia,1376).
borders(angola,congo,201).
borders(angola,zambia,1110).
borders(angola,zaire,2511).
Pourquoi ne pas devenir C
la somme de ces chiffres?
Pourquoi pas 'findall/3'? Pourquoi ne vérifiez-vous pas aussi 'borders (_, Country, X)'? –
Je veux trouver les pays qui bordent un pays spécifique, mais qui me donnent des valeurs inutiles? –
trouver tout résolu le problème, merci! –