Форум программистов, компьютерный форум, киберфорум
Наши страницы
Clojure
Войти
Регистрация
Восстановить пароль
 
Ghost48624
0 / 0 / 0
Регистрация: 11.02.2016
Сообщений: 30
1

Описать функцию, которая находила бы сумму всех числовых атомов в списке, учитывая все атомы подсписков

25.10.2017, 22:41. Просмотров 369. Ответов 8
Метки нет (Все метки)

Описать функцию, которая находила бы сумму всех числовых атомов в списке, учитывая все атомы подсписков.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2017, 22:41
Ответы с готовыми решениями:

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

Описать функцию, которая находила бы сумму всех числовых элементов в списке
описать функцию, которая находила бы сумму всех числовых элементов в списке. Список может содержать...

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

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

Написать функцию, которая вычисляет количество всех атомов в списке(кроме NIL) с учетом всех подсписков всех уровней вложенности
Написать функцию, которая вычисляет количество всех атомов в списке(кроме NIL) с учетом всех...

8
Catstail
Модератор
24609 / 12516 / 2285
Регистрация: 12.02.2012
Сообщений: 20,334
25.10.2017, 23:41 2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(defun sum-num (lst &optional (r 0))
   (cond ((null lst) r)
         ((numberp (car lst)) (sum-num (cdr lst) (+ r (car lst))))
         ((listp (car lst)) (sum-num (cdr lst) (+ r (sum-num (car lst)))))
         (t (sum-num (cdr lst) r)))) 
 
==> SUM-NUM
 
(sum-num '(1 2 3 4))
 
==> 10
 
(sum-num '(1 2 a 3 b 4))
 
==> 10
 
(sum-num '(1 2 a (((3 x))) b 4))
 
==> 10
2
_sg
4123 / 3870 / 294
Регистрация: 12.05.2012
Сообщений: 2,725
26.10.2017, 13:41 3
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun sum-num (w
                &optional (ac 0)
                &aux (a (car w)) (d (cdr w)))
  (if w (sum-num d
                 (+ ac
                    (cond ((numberp a) a)
                          ((listp a) (sum-num a))
                          (0))))
      ac))
 
> (sum-num '(1 2 a (((3 x))) b 4))
10
Добавлено через 58 секунд
Lisp
1
2
3
4
5
6
7
8
9
10
(defun sum-num (w &optional (ac 0) &aux (a (car w)))
  (if w (sum-num (cdr w)
                 (+ ac
                    (cond ((numberp a) a)
                          ((listp a) (sum-num a))
                          (0))))
      ac))
 
> (sum-num '(1 2 a (((3 x))) b 4))
10
2
_sg
4123 / 3870 / 294
Регистрация: 12.05.2012
Сообщений: 2,725
26.10.2017, 13:44 4
Lisp
1
2
3
4
5
6
7
(defun sum-num (w)
  (loop for a in w sum (cond ((numberp a) a)
                             ((listp a) (sum-num a))
                             (0))))
 
> (sum-num '(1 2 a (((3 x))) b 4))
10
2
26.10.2017, 13:44
_sg
4123 / 3870 / 294
Регистрация: 12.05.2012
Сообщений: 2,725
26.10.2017, 13:46 5
Lisp
1
2
3
4
5
6
7
(defun sum-num (w)
  (loop for a in w
        if (numberp a) sum a
        else if (listp a) sum (sum-num a)))
 
> (sum-num '(1 2 a (((3 x))) b 4))
10
2
_sg
4123 / 3870 / 294
Регистрация: 12.05.2012
Сообщений: 2,725
29.10.2017, 21:27 6
Lisp
1
2
3
4
5
6
7
8
9
(defun sum-numbers (w)
  (typecase w
    (cons (+ (sum-numbers (car w))
             (sum-numbers (cdr w))))
    (number w)
    (t 0)))
 
> (sum-numbers '(1 2 a (((3 x))) b 4))
10
2
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
01.11.2017, 03:34 7
Lisp
1
2
3
(def a '(1 a 2 v 3))
(apply + (filter number? a))
;=>6
Clojure
1
Catstail
Модератор
24609 / 12516 / 2285
Регистрация: 12.02.2012
Сообщений: 20,334
01.11.2017, 09:24 8
ntlinuxnt, гм... а подсписки?
0
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
01.11.2017, 16:17 9
Цитата Сообщение от Catstail Посмотреть сообщение
гм... а подсписки?
Что-то не увидел, попозже напишу.

Добавлено через 7 минут
Lisp
1
2
3
4
(def a '(1 a 2 v 3 (2 3)))
;=> #'user/a   
(apply + (filter number? (flatten a)))
;=> 11
Хотя разница совсем мизер.
1
01.11.2017, 16:17
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2017, 16:17

Описать функцию, которая по атому и списку выдает множество всех атомов в списке
Опишите функцию послед(x, y, n), которая по атому x и списку y выдает множество всех атомов в y,...

Вычислить сумму числовых элементов списка, учитывая элементы подсписков
Доброго времени суток! Задача состоит в следующем: Вычислить сумму числовых элементов списка,...

Реализовать функцию, включающую объект на заданное место в списке, учитывая элементы подсписков
Помогите пожалуйста!! Реализовать функцию, включающую объект на заданное место в списке, учитывая...


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

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

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