2017-01-31 4 views
1

Ich habe Fakten mit numerischen Attributen (Buchstaben mit zugeordneten numerischen Werten).Prolog: Werte in einer Liste zählen

point(a, 1). 

point(b, 3). 

point(c, 3). 

%etc for the rest of the alphabet 

Ich brauche ein Programm in Prolog zu schreiben, die diese Attribute in einer Liste zählen würden. Stattdessen konnte ich nur Elemente in der Liste zählen, nicht ihre Attribute. Können Sie mir einen Rat geben? Das würde mir sehr helfen!

count_points([ ], 0). 

count_points([H|T], Count) :- 
    count_points(T, Number), 
    Count is Number + 1. 

Die Antwort sollte folgendes Beispiel Eingabe/Ausgabe reproduzieren:

?- count_points([h,e,l,p], Score). 

    Score = 14. 

I 14 geschrieben, aber es hängt von der zugewiesenen Nummer auf das Schreiben.

+0

die Online-Hilfe für die Formatierung anzeigen. Code-Ausschnitte sind in der Regel feste Abstände durch Einrücken jeder Zeile um 4 Leerzeichen formatiert. – lurker

+0

Willkommen bei Stack Overflow! Es sieht so aus, als ob du nach Hausaufgabenhilfe fragst. Obwohl wir damit keine Probleme haben, beachten Sie bitte diese [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)/338845 # 338845) und bearbeiten Sie Ihre Frage entsprechend. –

Antwort

1

Ich würde mit (siehe here online):

point(u, 1). 
point(r, 2). 
point(i, 3). 
point(e, 4). 
point(l, 5). 

count_points([], 0). 
count_points([H|T], Count) :- count_points(T, N), point(H, P), Count is N + P. 

% count_points([u, r, i, e, l], X). 
% X = 15 
+0

Die Eingabe wäre Buchstaben, keine Zahlen. Das Ergebnis sollte etwa so aussehen:% count_points ([u, r, i, e, l], X). % X = 15 – lele

+0

@lele siehe update – Uriel

+0

Vielen Dank! Das ist perfekt! – lele

Verwandte Themen