Сумма двух списков - Prolog
Формулировка задачи:
Листинг программы
- %sum_str(L1,L2,Res).
- sum_str([],_,_):-write('Error'),!.
- sum_str([X],[Y],[R]):-R is X+Y,!.
- sum_str([X|L],[Y|L1],[H|T]):-H is X+Y,sum_str(L,L1,T).
Листинг программы
- Error
- Res = [2, 4|_G5320].
Решение задачи: «Сумма двух списков»
textual
Листинг программы
- domains
- intl=integer*
- predicates
- sum_str(intl,intl,intl)
- clauses
- sum_str([],_,_):-write("Error"),nl,fail.
- sum_str(_,[],_):-write("Error"),nl,fail.
- sum_str([X],[Y],[R]) :- R = X+Y,!.
- sum_str([X|L],[Y|L1],[H|T]) :- H = X+Y,sum_str(L,L1,T).
Объяснение кода листинга программы
domains
- определение типа данных, используемых в программе. В данном случае, это целочисленный тип (integer*
).predicates
- определение пользовательскихpredicates. В данном случае, определен predicatesum_str
, который принимает три аргумента типаintl
.clauses
- определение правил (условий) для работы с predicates. В данном случае, определено три правила для работы с predicatesum_str
.- Правило
sum_str([],_,_):-write(
Error),nl,fail.
говорит о том, что если первый аргумент пуст, то программа выведет сообщение об ошибке и завершит работу. - Правило
sum_str(_,[],_):-write(
Error),nl,fail.
говорит о том, что если второй аргумент пуст, то программа выведет сообщение об ошибке и завершит работу. - Правило
sum_str([X|L],[Y|L1],[H|T]) :- H = X+Y,sum_str(L,L1,T).
говорит о том, что если в первом аргументе есть элементы, то программа вычисляет сумму соответствующих элементов второго аргумента и передает остальные элементы в следующую рекурсивную итерацию. - Правило
sum_str([X|L],[Y|L1],[H|T]) :- H = X+Y,!.
говорит о том, что если в первом аргументе есть элементы, то программа вычисляет сумму соответствующих элементов второго аргумента и завершает работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д