Пролог - сумма любой каждой строки и столбца - PullRequest
2 голосов
/ 05 декабря 2010

Я хочу суммировать каждую строку и столбец в матрице и проверить, все ли они одинаковы. Я хочу использовать для этого метод суммы строк и транспонирования, но я понятия не имел, как он может проверить, совпадают ли суммы всех строк и столбцов.

Можете ли вы дать мне некоторые рекомендации по алгоритму? Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 05 декабря 2010

Просто всегда используйте одну и ту же переменную при вычислении суммы.
Этот пример показывает, как это делается для строк.

checkRowSums([], _).
checkRowSums([Row|R], Sum) :- rowSum(Row, Sum), checkRowSums(R, Sum).

?- checkRowSums([[1, 5], [2, 4], [1, 2, 3]], _).
0 голосов
/ 06 декабря 2014

Для проверки строк в столбце вы можете использовать предикат sum_list:

sum_list([], 0). sum_list([H|T], Sum) :- sum_list(T, Rest), Sum is H + Rest.

Затем используйте sum_list, чтобы найти общую сумму строк, например:

sum_rows([],[]). sum_rows([Head|Tail], [Ret|Return]) :- sum_list(Head, Ret), sum_rows(Tail, Return).

Это вернет список сумм строк.

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