Я столкнулся с проблемой при попытке перебрать двумерный массив и суммировать длины всех элементов внутри пролога.
Я попытался перебрать простой одномерный массив, и результат быложидается.Однако возникли трудности, когда я начал писать код для 2D-массива.Вот мой код:
findsum(L):-
atom_row(L, Sum),
write(Sum).
atom_row([Head|Tail], Sum) :-
atom_lengths(Head, Sum),
atom_row(Tail, Sum).
atom_row([], 0).
atom_lengths([Head|Tail], Sum):-
atom_chars(Head, CharList),
length(CharList, ThisLenght),
atom_lengths(Tail, Temp),
Sum is Temp + ThisLenght,
write(ThisLenght).
atom_lengths([], 0).
Например, сумма элементов в массиве [[aaa, bbbb], [ccccc, dddddd]] должна быть равна 18. И вот что я получаю:
?- findsum([[aaa, bbbb], [ccccc, dddddd]]).
436
false.
Вывод происходит из строки write(ThisLength)
после каждой итерации.