Для квадратной матрицы определить, содержит ли она два разных столбца, с одинаковой суммой элементов - 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д