2 / 2 / 0
Регистрация: 27.04.2013
Сообщений: 43
1

Функция: удалить каждый третий элемент списка

22.06.2013, 20:17. Показов 2182. Ответов 6
Метки нет (Все метки)

Определить функцию, удаляющую из списка каждый третий элемент и возвращающую в качестве значения полученный список.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2013, 20:17
Ответы с готовыми решениями:

Lisp -> Erlang: удалить каждый третий элемент списка
удалить каждый 3-тий элемент списка пример что должно получиться: >(name ‘(a s d q w e z x...

Выбрать из списка каждый третий элемент
Выбрать из списка каждый третий элемент и возвратить их в новый список. Помогите пожалуйста, совсем...

Формировать список, в котором отсутствует каждый третий элемент исходного списка
Моя работает неправильно.Помогите найти ошибку.пользоваться можно только car cdr cons (defun...

Удалить каждый второй элемент из списка
написать ф-ю удаление из списка к-го 2го эл-та

6
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
22.06.2013, 20:26 2
Lisp
1
2
3
(loop for a in '(1 2 3 4 5 6 7 8 9)
              unless (zerop (mod a 3))
              collect a)
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
29239 / 15991 / 3182
Регистрация: 12.02.2012
Сообщений: 26,316
Записей в блоге: 5
22.06.2013, 21:29 3
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun del3 (lst &optional (c 1))
  (cond ((null lst) nil)
        ((= c 3) (del3 (cdr lst) 1))
        (t (cons (car lst) (del3 (cdr lst) (1+ c))))))
 
 
==> del3
 
(del3 '(1 2 3 4 5 6 7 8 9))
 
==> (1 2 4 5 7 8)
0
4535 / 4241 / 359
Регистрация: 12.05.2012
Сообщений: 2,983
23.06.2013, 10:15 4
Lisp
1
2
3
4
5
6
7
(defun del-third (w &aux (n 0))
  (mapcan #'(lambda (a) (incf n) (cond ((= n 3) (setq n 0) nil)
                                       ((list a))))
          w))
 
> (del-third '(1 2 3 4 5 6))
(1 2 4 5)
Lisp
1
2
3
4
5
6
(defun del-third (w)
  (cond ((< (length w) 3) w)
        ((nconc (list (car w) (cadr w)) (del-third (nthcdr 3 w))))))
 
> (del-third '(1 2 3 4 5 6))
(1 2 4 5)
Lisp
1
2
3
4
5
6
(defun del-third (w)
  (cond ((< (length w) 3) w)
        ((list* (car w) (cadr w) (del-third (nthcdr 3 w))))))
 
> (del-third '(1 2 3 4 5 6))
(1 2 4 5)
Lisp
1
2
3
4
5
6
(defun del-third (w)
  (cond ((< (length w) 3) w) 
        ((nconc (subseq w 0 2) (del-third (subseq w 3))))))
 
> (del-third '(1 2 3 4 5 6))
(1 2 4 5)
Lisp
1
2
3
4
5
(defun del-third (w &aux (n 0))
  (delete-if #'(lambda (a) (incf n) (zerop (mod n 3))) w))
 
> (del-third '(1 2 3 4 5 6))
(1 2 4 5)
Lisp
1
2
3
4
5
(defun del-third (w &aux (n 0))
  (delete 0 w :key #'(lambda (a) (incf n) (mod n 3))))
 
> (del-third '(1 2 3 4 5 6))
(1 2 4 5)
Lisp
1
2
3
4
5
6
7
(defun del-third (w)
  (cond ((null w) nil)
        ((null (cdr w)) (cons (car w) nil))
        ((cons (car w) (cons (cadr w) (del-third (cdddr w)))))))
 
> (del-third '(1 2 3 4 5 6 7))
(1 2 4 5 7)
Lisp
1
2
3
4
5
6
7
(defun del-third (w)
  (if (cddr w) 
      (nconc (list (car w) (cadr w)) (del-third (nthcdr 3 w))) 
      w))
 
> (del-third '(1 2 3 4 5 6 7))
(1 2 4 5 7)
Lisp
1
2
3
4
5
(defun del-third (w)
  (if (cddr w) (list* (car w) (cadr w) (del-third (nthcdr 3 w))) w))
 
> (del-third '(1 2 3 4 5 6 7))
(1 2 4 5 7)
Lisp
1
2
3
4
5
(defun del-third (w)
  (if (cddr w) (nconc (subseq w 0 2) (del-third (subseq w 3))) w))
 
> (del-third '(1 2 3 4 5 6 7))
(1 2 4 5 7)
Lisp
1
2
3
4
5
6
7
8
(defun del-third (w)
  (reduce #'nconc 
          (loop for a on w by #'cdddr
                if (cdr a) collect (list (car a) (cadr a))
                else collect (list (car a)))))
 
> (del-third '(1 2 3 4 5 6 7))
(1 2 4 5 7)
Lisp
1
2
3
4
5
6
7
8
(defun del-third (w)
  (reduce #'nconc 
          (loop for a on w by #'cdddr
                if (cdr a) collect `(,(car w) ,(cadr a))
                else collect `(,(car a)))))
 
> (del-third '(1 2 3 4 5 6 7))
(1 2 4 5 7)
2
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
19.12.2013, 13:26 5
Цитата Сообщение от Catstail Посмотреть сообщение
Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun del3 (lst &optional (c 1))
  (cond ((null lst) nil)
        ((= c 3) (del3 (cdr lst) 1))
        (t (cons (car lst) (del3 (cdr lst) (1+ c))))))
 
 
==> del3
 
(del3 '(1 2 3 4 5 6 7 8 9))
 
==> (1 2 4 5 7 8)
пишет EVFUN: Не найдена функция 1+
==>ERRSTATE
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
29239 / 15991 / 3182
Регистрация: 12.02.2012
Сообщений: 26,316
Записей в блоге: 5
19.12.2013, 13:39 6
Вместо (1+ c) напиши (+ 1 с)
1
3 / 3 / 0
Регистрация: 17.10.2011
Сообщений: 131
19.12.2013, 17:09 7
Цитата Сообщение от Catstail Посмотреть сообщение
Вместо (1+ c) напиши (+ 1 с)
теперь работает. спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2013, 17:09

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Удалить из списка каждый второй элемент
Удалить из. списка каждый второй элемент

Из заданного списка удалить каждый второй элемент
Из заданного списка удалить каждый второй элемент, результирующий список переписать в обратном...

Каждый нечетный элемент списка умножить на 2, каждый четный на 3
сначало пытаюсь написать хотя бы проверку на четность и умножение на 3. (defun четность (l) ...

каждый нечетный элемент списка умножить на 2, каждый четный на 3. использовать только рекурсию CAR,CDR,COND,CONS
каждый нечетный элемент списка умножить на 2, каждый четный на 3. использовать только рекурсию ...


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

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

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