Сложить дни летних месяцев

Дано 12 фактов. Необходимо найти сумму летних дней (92 должно получится)

месяц(1,январь,31).
месяц(2,февраль,29).
месяц(3,март,31).
месяц(4,апрель,30).
месяц(5,май,31).
месяц(6,июнь,30).
месяц(7,июль,31).
месяц(8,август,31).
месяц(9,сентябрь,30).
месяц(10,октябрь,31).
месяц(11,ноябрь,30).
месяц(12,декабрь,31).

symSummer():-месяц(X,Y,Z), X>=6, X<=8, Z= Z+Z+Z, write(Z),nl, fail;
true.

Что я делаю не так ?


Ответы (1 шт):

Автор решения: rotabor

Первая программа, которая заработала:

main:-
    listDays(6,8),
    halt.
    месяц(1,январь,31).
    месяц(2,февраль,29).
    месяц(3,март,31).
    месяц(4,апрель,30).
    месяц(5,май,31).
    месяц(6,июнь,30).
    месяц(7,июль,31).
    месяц(8,август,31).
    месяц(9,сентябрь,30).
    месяц(10,октябрь,31).
    месяц(11,ноябрь,30).
    месяц(12,декабрь,31).
    listDays(L,H):-L=:=H,месяц(L,_,Y),write(Y),nl.
    listDays(L,H):-L<H,месяц(L,_,Y),write(Y),nl,X is L + 1,listDays(X,H).
:-main.

-->

30
31
31

Работаю дальше. Прорвёмся.

OnlineGDB -это просто сайт, программы по этой ссылке нет.

И вот требуемый результат:

main:-
    sumDays(6,8,0),
    halt.
    месяц(1,январь,31).
    месяц(2,февраль,29).
    месяц(3,март,31).
    месяц(4,апрель,30).
    месяц(5,май,31).
    месяц(6,июнь,30).
    месяц(7,июль,31).
    месяц(8,август,31).
    месяц(9,сентябрь,30).
    месяц(10,октябрь,31).
    месяц(11,ноябрь,30).
    месяц(12,декабрь,31).
    sumDays(L,H,S):-L>H,месяц(L,_,Y),T is S+Y,X is L-1,sumDays(X,H,T).
    sumDays(L,H,S):-L<H,месяц(L,_,Y),T is S+Y,X is L+1,sumDays(X,H,T).
    sumDays(L,H,S):-L=:=H,месяц(L,_,Y),T is S+Y,write(T),nl.
:-main.

-->

92
→ Ссылка