Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
tikva06
0 / 0 / 0
Регистрация: 14.11.2015
Сообщений: 13
#1

Реализовать аппликативный оператор MY-REMOVE-IF с интерфейсом и семантикой, аналогично стандартному REMOVE-IF

16.11.2015, 19:04. Просмотров 156. Ответов 3
Метки нет (Все метки)

Реализовать аппликативный оператор MY-REMOVE-IF с интерфейсом и семантикой, аналогично стандартному REMOVE-IF.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2015, 19:04
Ответы с готовыми решениями:

Продвинутый remove-duplicates
Должно удалять дубликаты на всех уровнях списка. Пробовал сделать, но пока не...

Remove работает странно
Что-то у меня функция remove перестала работать. Я что-то не так начал делать?...

Определить функцию MY-REMOVE
Определить функцию MY-REMOVE – рекурсивную версию REMOVE- функции.

Удалить из данного списка списков все, длина которых больше заданного числа, с помощью REMOVE-IF[-NOT]
Удалить из данного списка списков все, длина которых больше заданного числа, с...

Функция remove() удаляет только заранее запланированые файлы, выдавая ошибку на remove (STRING)
Салем, начал изучать файловую работу в С++, и столкнулся с такой проблемой, что...

3
Catstail
Модератор
23575 / 11676 / 2043
Регистрация: 12.02.2012
Сообщений: 19,049
16.11.2015, 20:01 #2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun my-remove-if (p lst)
  (cond ((null lst) nil)
        ((funcall p (car lst)) (my-remove-if p (cdr lst)))
        (t (cons (car lst) (my-remove-if p (cdr lst))))))
 
==> my-remove-if
 
(my-remove-if 'oddp '(1 2 3 4 5 6 7 8 9))
 
==> (2 4 6 8)
 
(my-remove-if 'evenp '(1 2 3 4 5 6 7 8 9))
 
==> (1 3 5 7 9)
1
helter
Эксперт по математике/физике
3753 / 2780 / 300
Регистрация: 12.03.2013
Сообщений: 5,125
17.11.2015, 00:18 #3
Я знал, что решатели схалтурят. У стандартного-то remove-if и интерфейс, и семантика побогаче:
http://clhs.lisp.se/Body/f_rm_rm.htm
Но Тыкве на троечку сойдёт.
4
Catstail
Модератор
23575 / 11676 / 2043
Регистрация: 12.02.2012
Сообщений: 19,049
17.11.2015, 10:18 #4
На "четыре с минусом":

Lisp
1
2
3
4
5
6
7
8
9
10
(defun remove-if (p lst &KEY (count NIL) (from-end NIL)) 
   (COND (from-end (reverse (remove-if p (reverse lst) :count count :from-end NIL)))
         (T (COND ((NULL count) 
                   (COND ((NULL lst) NIL) 
                         ((FUNCALL p (CAR lst)) (remove-if p (CDR lst)))
                         (T (CONS (CAR lst) (remove-if p (CDR lst)))))) 
                  (T (COND ((NULL lst) NIL) 
                           ((= count 0) lst) 
                           ((FUNCALL p (CAR lst)) (remove-if p (CDR lst) :count (SUB1 count)))
                           (T (CONS (CAR lst) (remove-if p (CDR lst) :count count)))))))))
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2015, 10:18

Реализовать методы: Contains, Clear, remove, Insert
Если можно с комментариями

Реализовать функции: mktemp, remove, rename, setmode, fileleght
Здравствуйте нужна помощь с заданием по курсовой, Тема: Реализация функций...

Реализовать методы add и remove по индексу для самодельного списка
Есть самописный список, нужно реализовать функции add(value, index) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru