СибГУТИ Лабораторная 2 Функциональное и логическое программирование скачать бесплатно
Задание
Удалите из списка L перед каждым вхождением X один элемент, если такой
имеется и отличен от X.
Например, для языка CLISP при L=(1 2 1 1 3), X=1 функция должна вернуть (1 1 1 3).
Текст программы (lsp)
(defun delone(lst x &optional (o nil))
(cond ((null lst) (list o))
((and (not (eq o nil)) (or (/= (car lst) x) (eq o x))) (cons o (delone lst x)))
(t (delone (cdr lst) x (car lst)))))
(defun start()
(princ "write list: ")
(setq lst (read))
(princ "write x: ")
(setq x (read))
(delone lst x))
(print (start))
Текст программы (pl)
start():-
write('Введите список L: '),
read(L),
write('введите X:'),
read(X),
delone(L,X,R),
write(R).
delone([],_,[]).
delone([H,X|L],X,[X|L1]):-
H \= X,!,delone(L, X, L1).
delone([H|L],X,[H|L1]):-
delone(L,X,L1).
Результаты работы программы (lsp)
Результаты работы программы (pl)