Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 19.12.2010
Сообщений: 42
1

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

16.12.2013, 14:03. Показов 1238. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
И снова здравствуйте, потребовалась помощь ещё в трёх заданиях:

1. Дан список чисел. Определить функцию, возвращающую сумму только чётных
элементов. Использовать только базис Лиспа.
Например: если дано "(3 1 4 1 5 9 2 6)", ответом будет "12".


Заранее большое спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2013, 14:03
Ответы с готовыми решениями:

Определить функцию, возвращающую сумму 1-го, 3-го, 5-го и т.д. элементов
Форумчата)))большая прибольшая просьба помогите написать коды на программки по лисп)))зашиваюсь(((...

Clojure Дан список чисел. Определить функцию, возвращающую сумму 1-го, 3-го, 5-го и .д. элементов
Дан список чисел. Определить функцию, возвращающую сумму 1-го, 3-го, 5-го и .д. элементов....

Описать функцию, возвращающую сумму четных цифр целого положительного числа К
Описать функцию sum(k) целого типа, возвращающую сумму четных цифр целого положительного числа К....

Написать функцию, возвращающую сумму элементов массива
Разработайте функцию, в которую передается массив типа float, что возвращает сумму элементов этого...

10
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
16.12.2013, 14:30 2
Марик73, понятно, что решения 2-й и 3-й для тебя это на грани фантастики, но 1-ю ты ведь можешь решить?)
0
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
16.12.2013, 16:23 3
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun replace-vowels (s r &optional (w '("a" "e" "i" "o" "u")))
  (if w (replace-vowels (replace-lets s (car w) r) r (cdr w)) s))
 
(defun replace-lets (s p r &aux (e (search p s)))
  (if e
      (concatenate
       'string 
       (subseq s 0 e)
       r
       (replace-lets (subseq s (1+ e)) p r))
      (concatenate 'string nil s)))
 
> (replace-vowels "aberikodubra" "z")
"zbzrzkzdzbrz"
1
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
16.12.2013, 16:28 4
Цитата Сообщение от transformator.t Посмотреть сообщение
Марик73, понятно, что решения 2-й и 3-й для тебя это на грани фантастики, но 1-ю ты ведь можешь решить?)
Не царское это дело - решать.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
16.12.2013, 16:34 5
В третьей задаче у тебя в дереве две пятерки (что странно). Я одну заменил на 6. Правильный ответ, мне кажется, не 5, а 6.

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
28
29
30
31
32
33
34
;; вспомогательная функция подсчета потомков
 
(defun count-desc (tree)
  (cond ((null tree) 0)
        (t (+ (if (cadr tree) 1 0) 
              (if (caddr tree) 1 0)
              (count-desc (cadr tree))
              (count-desc (caddr tree)))))) 
 
==> count-desc
 
;; список вершин дерева, имеющих менее 4-х потомков
 
(defun counter (tree &optional r)
  (cond ((null tree) r)
        ((< (count-desc tree) 4) (counter (cadr tree) (cons (car tree) (counter (caddr tree) r))))
        (t (counter (cadr tree) (counter (caddr tree) r)))))
  
==> counter
 
(counter '(1 (2 (5 nil nil) nil) (3 (7 nil nil) (6 (9 nil nil) (8 nil nil)))))
 
==> (5 2 7 9 6 8)
 
;; Собственно решение
 
(defun task (tree)
  (length (counter tree)))
 
==> task
 
(task '(1 (2 (5 nil nil) nil) (3 (7 nil nil) (6 (9 nil nil) (8 nil nil)))))
 
==> 6
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
16.12.2013, 16:39 6
helter, весьма удобно расчитывать на форум) можно ещё пивко попивать, а решение придёт, реквестируем на киберфорум)) мало того - опытный бездельник понимает, что он может расчитывать на большее, _sg например, по запросу, так вообще тонны вариантов выдает)))
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
16.12.2013, 16:43 7
Вторая (HomeLisp):

Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun заменить-гласные-на-а (stri)
 (let ((res (list stri)))
  (iter (for буква in '("a" "о" "у" "е" "и" "ы" "я" "э"))
    (push (strRep (car res) буква "a") res))
  (car res)))
 
==> заменить-гласные-на-а
 
(заменить-гласные-на-а "Привет мир!")
 
==> "Прaвaт мaр!"
0
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
16.12.2013, 16:47 8
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun replace-vowels (s r &optional (w '("a" "e" "i" "o" "u")))
  (if w (replace-vowels (replace-lets s (car w) r) r (cdr w)) s))
 
(defun replace-lets (s p r &aux (e (search p s)))
  (if e
      (concatenate
       'string 
       (subseq s 0 e)
       r
       (replace-lets (subseq s (1+ e)) p r))
      s))
 
> (replace-vowels "aberikodubraq" "z")
"zbzrzkzdzbrzq"
1
0 / 0 / 1
Регистрация: 19.12.2010
Сообщений: 42
25.12.2013, 12:34  [ТС] 9
а можно переделать на чистом лиспе без if,&optional, aux и т.д.?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36606 / 20334 / 4221
Регистрация: 12.02.2012
Сообщений: 33,653
Записей в блоге: 13
25.12.2013, 13:21 10
Цитата Сообщение от Марик73 Посмотреть сообщение
а можно переделать
- можно, но попробуй сам. Кстати, if,&optional, &aux - это неотъемлемая часть современного Лиспа.
0
4527 / 3521 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
25.12.2013, 17:04 11
Цитата Сообщение от Марик73 Посмотреть сообщение
а можно переделать на чистом лиспе без if,&optional, aux и т.д.?


Вообще, если начать фейспальмить на этом форуме, никаких фейспалмов не хватит. Но тут совершенно невозможно удержаться.
0
25.12.2013, 17:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2013, 17:04
Помогаю со студенческими работами здесь

Напишите функцию, возвращающую сумму элементов массива
18. Дан массив размера N и целые числа K и L (0 ≤ K ≤ L ≤ N-1). Напишите функцию, возвращающую...

Написать функцию, возвращающую сумму всех элементов массива
Написать функцию которая возвращает сумму всех элементов масива (масив и размер это параметры...

Напишите рекурсивную функцию, возвращающую сумму положительных элементов массива
Выдает ошибку и выводит 0 #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; int k = 0;...

Написать функцию, возвращающую сумму и произведение всех элементов целочисленного массива
Написать функцию, возвращающую сумму и произведение всех элементов целочисленного массива


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru