Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
radik555
0 / 0 / 0
Регистрация: 13.10.2017
Сообщений: 1
1

Получить список, элементами которого будут являться только атомы верхнего уровня

23.11.2012, 22:00. Просмотров 1485. Ответов 3
Метки нет (Все метки)

1. Из заданного списка получить список, элементами которого будут являться только атомы верхнего уровня. (2 (а е) 4 ((5) у) с) -> (2 4 c)
2. Найти сумму неотрицательных элементов заданного списка целых чисел.
(2 -3 4 -1 -6) -> 6
3. Найти число вхождений заданного элемента в список (на любом уровне вложенности).
((1 2) 2 (4 2 3)), 2 -> 3
4. Для заданного атомарного списка целых чисел получить список номеров четных элементов. (3 4 1 5 6) -> (2 5)
5. Из заданного атомарного списка удалить элементы, стоящие на нечетных местах.
(1 4 5 2 7 6) -> (4 2 6)
6. Для заданного атомарного списка целых чисел и числа получить номер первого элемента, большего, чем заданное число(0, если такого нет). (5 4 3 6 2 7), 5 -> 4
7. Для двух заданных списков получить список, элементами которого будут только элементы, принадлежащие первому списку и не принадлежащие второму.
(2 5 6 1) , (3 4 6) -> (2 5 1)
8. Найти число элементов атомарного списка целых чисел, равных своему индексу.
(1 3 2 4 7) -> 2
9. Атомарный список целых чисел разделить на 2 списка с элементам большими 5 и меньшими. (2 7 8 1 3 4) -> (2 1 3 4) ,(7 8)
10. Для заданного атомарного списка целых чисел после каждого элемента кратного 3 вставить его номер. (1 6 4 9 5) -> (1 6 2 4 9 4 5)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 22:00
Ответы с готовыми решениями:

Можно ли получить только дочерний текст(верхнего уровня) элемента
Есть такой кусок HTML: <div class="price"> 13 200 руб. <div class="quantity"> x2 — 26...

Создать список, элементами которого будут так же списки
Нужно создать список. элементами которого будут так же списки. т.е. список в списке.

Будут новые домены верхнего уровня
По сообщениям пресс-релиза ICANN крупнейшие корпорации мира смогут зарегистрировать для своих...

Из целочисленной матрицы A(n x m) получить вектор элементами которого будут TRUE , если в соответствующей строке есть хотя бы один ненулевой элемент
Из целочисленной матрицы A(n x m) получить вектор элементами которого будут TRUE , если в...

Из квадратной матрицы получить вектор X, элементами которого будут элементы главной диагонали матрицы
Из квадратной матрицы получить вектор X, элементами которого будут элементы главной диагонали...

3
_sg
4130 / 3877 / 294
Регистрация: 12.05.2012
Сообщений: 2,730
23.11.2012, 22:33 2
Lisp
1
2
3
4
5
6
7
(defun scots (w &aux (a (car w)) (d (cdr w)))
  (cond ((null w) nil)
        ((atom a) (cons a (scots d)))
        ((scots d))))
 
> (scots '(2 (a e) 4 ((5) y) c))
(2 4 C)
Lisp
1
2
3
4
5
6
7
(defun sum-plusp (w &aux (a (car w)) (d (cdr w)))
  (cond ((null w) 0)
        ((plusp a) (+ a (sum-plusp d)))
        ((sum-plusp d))))
 
> (sum-plusp '(2 -3 4 -1 -6))             
6
0
Catstail
Модератор
24741 / 12544 / 2289
Регистрация: 12.02.2012
Сообщений: 20,403
24.11.2012, 15:48 3
Номера четных:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;; рекурсия
 
(defun num-even (x &optional (r nil) (c 0))
  (cond ((null x) r)
        ((evenp (car x)) (num-even (cdr x) (cons (+ c 1) r) (+ c 1)))
        (t (num-even (cdr x) r (+ c 1)))))
 
==> num-even
 
 
(num-even '(1 2 3 3 4 4 5))
 
==> (6 5 2)
 
;; итерация
 
 
(defun num-even-i (x)
  (let ((r nil) (c 1))
       (dolist (i x r)
         (when (evenp i) (setq r (cons c r)))
         (setq c (+ c 1)))))
==> num-even-i
 
(num-even-i '(1 2 3 3 4 4 5))
 
==> (6 5 2)
Добавлено через 4 минуты
Удаление элементов, стоящих на нечетных местах:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun del-odd-place (x &optional (c -1))
   (cond ((null x) nil)
         ((> 0 c) (del-odd-place (cdr x) (- c)))
         (t (append (list (car x)) (del-odd-place (cdr x) (- c))))))
 
==> del-odd-place
 
(del-odd-place '(1 2 3 4 5 6))
 
==> (2 4 6)
Добавлено через 3 минуты
Номер первого элемента, большего заданного числа:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun num-gt (x n)
  (cond ((null x) 0)
        ((> (car x) n) 1)
        (t (+ 1 (num-gt (cdr x) n)))))
 
==> num-gt
 
(num-gt '(5 4 3 4 6 3) 5)
 
==> 5
Добавлено через 3 минуты
Элементы, входящие в первый, но не входящие во второй:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
;; Если в списках нет повторений элементов
 
(defun set-diff (x y) 
  (cond ((null y) x)
        ((null x) nil)
        ((Not (member (car x) y)) (cons (car x) (set-diff (cdr x) y))) 
        (t (set-diff (cdr x) y))))
 
==> set-diff
 
(set-diff '(1 2 3 4) '(3 4 5 6))
 
==> (1 2)
Добавлено через 7 минут
Если есть повторения:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun set-diff (x y &optional r) 
  (cond ((null y) r)
        ((null x) r)
        ((AND (Not (member (car x) y))
              (Not (member (car x) r)) )
              (set-diff (cdr x) y (cons (car x) r))) 
        (t (set-diff (cdr x) y r))))
 
==> set-diff
 
(set-diff '(1 1 1 2 2 2 3 4 4) '(3 4 5 6))
 
==> (2 1)
Добавлено через 4 минуты
Число элементов, равных индексу:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun eq-ind-n (x &optional (c 1))
   (cond ((null x) 0)
         ((= c (car x)) (+ 1 (eq-ind-n (cdr x) (+ c 1))))
         (t (eq-ind-n (cdr x) (+ c 1))))) 
 
==> eq-ind-n
 
(eq-ind-n '(5 2 6 4))
 
==> 2
Добавлено через 2 часа 23 минуты
Разделение на два списка:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun separate 
   (x n &optional (r '(nil nil)))
       (cond ((null x) r)
             ((= (car x) n) (separate (cdr x) n r))
             ((> (car x) n) (separate (cdr x) n (list (car r) (Cons (car x) (cadr r)))))
             (t (separate (cdr x) n (list (Cons (car x) (car r)) (cadr r)))))) 
 
==> separate
 
(separate '(11 2 3 4 22) 5)
 
==> ((4 3 2) (22 11))
Добавлено через 5 минут
И последняя:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun task3 (x &optional (c 1))
   (cond ((null x) nil)
         ((= 0 (% (car x) 3)) (append (list (car x) c) (task3 (cdr x) (+ c 1))))
         (t (append (list (car x))(task3 (cdr x) (+ c 1))))))
 
==> task3
 
(task3 '(1 2 1 2 6 3 4 5 12))
 
==> (1 2 1 2 6 5 3 6 4 5 12 9)
Добавлено через 47 минут
Список атомов верхнего уровня:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun alist (x)
  (cond ((null x) nil)
        ((atom (car x)) (cons (car x) (alist (cdr x))))
        (t (alist (cdr x)))))
 
==> alist
 
(alist '((1 2) r (6) 5 6 ((y c v))))
 
==> (r 5 6)
Добавлено через 5 минут
Число вхождений атома на всех уровнях:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun xcounter (lst a)
   (cond ((null lst) 0)
         ((atom (car lst))
          (cond ((EQ a (car lst)) (+ 1 (xcounter (cdr lst) a)))
                (t (xcounter (cdr lst) a))))
         (t (+ (xcounter (car lst) a) (xcounter (cdr lst) a)))))
 
        
 
==> xcounter
 
(xcounter '((1 2) 1 (((1))) 3 4) 1)
 
==> 3
0
Nameless One
Эксперт С++
5798 / 3448 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
27.11.2012, 03:13 4
Цитата Сообщение от Radik555 Посмотреть сообщение
1. Из заданного списка получить список, элементами которого будут являться только атомы верхнего уровня.
Lisp
1
2
(defun toplevel-atoms (list)
  (remove-if (complement #'atom) list))
 Комментарий модератора 
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
0
27.11.2012, 03:13
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 03:13

составить новое предложение символами которого будут являться суммы цифр соответствующих слов исходного предложения
дано предложение.слова разделены пробелами.в конце точка.словами являются натуральные...

В документах XML допускается только один элемент верхнего уровня
Вопрос про Xml, но он связан с XmlSerialization, по-этому пишу сюда. "В документе XML (2, 118)...

Получить указатель на окно верхнего уровня из другого класса
Всем привет! Могу путаться в терминологии, поправьте если что-) Необходимо получить указатель на...


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

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

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