Для квадратной матрицы определить, содержит ли она два разных столбца, с одинаковой суммой элементов - Prolog
Формулировка задачи:
Для квадратной матрицы определить, содержит ли она два разных столбца, с одинаковой суммой элементов
Решение задачи: «Для квадратной матрицы определить, содержит ли она два разных столбца, с одинаковой суммой элементов»
textual
Листинг программы
domains int=integer intl=int* intll=intl* predicates nth(int,intl,int) getcol(intll,int,intl) sumcol(intll,int,intl) suml(intl,int) memb(int,intl) haseq(intl) lenl(intll,int) task(intll) clauses lenl([],0). lenl([_|T],N) :- lenl(T,N1), N=N1+1. haseq([]):- fail. haseq([H|T]) :- memb(H,T), !. haseq([_|T]) :- haseq(T). memb(_,[]) :- fail. memb(H,[H|_]) :- !. memb(H,[X|T]) :- H<>X, memb(H,T). suml([],0). suml([H|T],S) :- suml(T,S1), S=S1+H. nth(1,[H|_],H). nth(N,[_|T],R) :- N1=N-1, nth(N1,T,R). getcol([],_,[]). getcol([H|T],N,[A|R]):- nth(N,H,A), getcol(T,N,R). sumcol(_,0,[]). sumcol(X,N,[S|T]) :- getcol(X,N,R), suml(R,S), N1=N-1, sumcol(X,N1,T). task(X) :- lenl(X,N), sumcol(X,N,SX), haseq(SX).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д