Ошибка пролога: is / 2: Аргументы недостаточно проработаны - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть проблема, которая требует от меня использования find all для суммирования всех соответствующих элементов в списке, а затем с помощью оператора для вычисления каждого элемента в списке значений и последующего суммирования их вместе, но возникает ошибка.Ожидаемый результат представляет собой сумму списка каждого элемента (если элемент четвертого атрибута равен 500, добавить 0, если четвертый атрибут равен 400, добавить пятый атрибут, умноженный на 439,52, если четвертый атрибут равен 300, добавить пятый атрибут, умноженный на 728,63) ожидаемого вывода.должно быть большое число.Запрос, который возникает ошибка:

recall_information(L, C), print_list(L).

, который, я думаю, является проблемой

findall(X+Y/Year,mmyws(X+Y/Year/_/_),L),
recall_informationHelper(L, C).

Вот код

mmyws(ium+titan/2010/300/224507).
mmyws(ium+titan/2011/300/262391).
mmyws(ium+titan/2012/400/267041).
mmyws(ium+titan/2013/500/268842).
mmyws(ium+titan/2014/500/263528).

recall_information(L,C) :-
    findall(X+Y/Year,mmyws(X+Y/Year/_/_),L),
    recall_informationHelper(L,C).

recall_informationHelper([],0).
recall_informationHelper([Head | Tail] ,C) :-
    recall_informationHelper(Tail, Z),
    Head = Make + Model / Year,
    mmyws(Make+Model/Year/W/N),
    member(W,[400]),
    C is Z + N * 439.52;
    member(W,[300]),
    C is Z + N * 728.63 ;
    member(W,[500]),
    C is Z.    

1 Ответ

0 голосов
/ 08 апреля 2019

Когда вы загрузили исходный код, вы получили

?- consult("C:/problem.pl").
Warning: c:/problem.pl:20:
        Singleton variable in branch: Z
        Singleton variable in branch: W
        Singleton variable in branch: N
true.

Обратите внимание, что у вас есть переменные, которые не были связаны (Z, W и N), и, таким образом,

C is Z + N * 439.52

не может быть сделано, потому что Z и N не связаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...