2017-01-31 3 views
1

У меня есть факты с числовыми атрибутами (буквы с присвоенными числовыми значениями).Пролог: подсчет значений в списке

point(a, 1). 

point(b, 3). 

point(c, 3). 

%etc for the rest of the alphabet 

Мне нужно написать программу в Прологе, которая будет считать эти атрибуты в списке. Вместо этого теперь мне удалось только подсчитать элементы в списке, а не их атрибуты. Не могли бы вы дать мне какие-нибудь советы? Это мне очень помогло!

count_points([ ], 0). 

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

Ответ должен воспроизвести следующий пример ввода/вывода:

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

    Score = 14. 

я написал 14, но это зависит от установленного числа к письму.

+0

Смотрите интерактивную справку для форматирования. Выделения кода обычно форматируются с фиксированным интервалом путем отступов каждой строки на 4 пробела. – lurker

+0

Добро пожаловать в переполнение стека! Похоже, вы просите о помощи на дому. Хотя у нас нет проблем с самим собой, обратите внимание на эти [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845 # 338845), и соответственно отредактируйте свой вопрос. –

ответ

1

Я бы с (см here онлайн):

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

Входные данные будут буквами, а не цифрами. Результат должен выглядеть примерно так:% count_points ([u, r, i, e, l], X). % X = 15 – lele

+0

@lele см. Обновление – Uriel

+0

Огромное спасибо! Отлично! – lele