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

Нужно написать проги на мулиспе

10.12.2012, 18:21. Показов 777. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1)Дан список произвольной структуры, в который входят как числа, так и
символьные атомы
. Написать функцию, которая возвращает список из двух
чисел
, первое из них равно сумме чисел исходного списка, а второе их
количеству. Программа должна быть написана с помощью общей рекурсии.
Пример: ((1 A)(2 (3) B (4))) —> (10 4)
2)Дан список из положительных чисел, построить список, элементами которого
ются количество единиц в исходном списке, количество двоек и т.д. до
симального значения числа в исходном списке. Программа должна быть написана с помощью хвостовой рекурсии.
Пример: (2 1 1 3 1 3 5) —> (3 1 2 0 1)
3)Дан список и число N. Разбить список на подсписки длины N.
Программа должна быть написана с помощью хвостовой рекурсии.
Пример: (A B (C D) 1 2 NIL) 4 —> ((A B (C D) 1) (2 NIL))
P.S для написания программ использую muLisp.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2012, 18:21
Ответы с готовыми решениями:

C++ нужно написать 2 проги
Здравствуйте,пожалуйста помогите! 1.Написать программу, которая вводит с клавиатуры двумерный...

Нужно Убрать ошибку из проги!
Нужно изменить границы циклов (лучше всего), либо f изменить на f там, где есть работа с открытым...

Нужно вручную диззасемблировать проги :)
В общем,такая ситуация: моей девушке препод дал задания в виде скомпилированных прог,нужно сделать...

Написать проги на C
1) Найти сумму целых положительных чисел 30<n>100, кратных 3 и оканчивающихся на 2.4 и 8. ...

5
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
10.12.2012, 20:28 2
Common Lisp:
Lisp
1
2
3
4
5
6
7
(defun quadros (w n &optional ac acc (m n)) 
  (cond ((null w)  (reverse (cons (reverse ac) (reverse acc))))
        ((= m 1) (quadros (cdr w) n nil (cons (reverse (cons (car w) ac)) acc) n))
        ((quadros (cdr w) n (cons (car w) ac) acc (1- m)))))
 
> (quadros '(A B (C D) 1 2 NIL) 4)
((A B (C D) 1) (2 NIL))
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36614 / 20339 / 4224
Регистрация: 12.02.2012
Сообщений: 33,675
Записей в блоге: 13
10.12.2012, 23:39 3
Вот решение первой задачи на muLisp-87:

Lisp
1
2
3
4
5
6
(defun num-counter (lst sum num)
    (cond ((null lst) (list sum num))
          ((numberp (car lst)) (num-counter (cdr lst) (+ sum (car lst)) (+ num 1)))
          ((listp (car lst)) 
            (num-counter (cdr lst) (+ sum  (car (num-counter (car lst) 0 0))) (+ num (cadr (num-counter (car lst) 0 0)))))
          (t (num-counter (cdr lst) sum num))))
Миниатюры
Нужно написать проги на мулиспе  
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36614 / 20339 / 4224
Регистрация: 12.02.2012
Сообщений: 33,675
Записей в блоге: 13
10.12.2012, 23:57 4
А вот - решение 4-й:

Lisp
1
2
3
4
(defun div-list (lst n c a r)
  (cond ((null lst) (append r (list a)))
        ((< c n) (div-list (cdr lst) n (+ c 1) (append a (list (car lst))) r))  
        (t (div-list (cdr lst) n 1 (list (car lst)) (append r (list a))))))
Миниатюры
Нужно написать проги на мулиспе  
0
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 14
11.12.2012, 08:43  [ТС] 5
Catstail, спасибо еще раз и можно еще раз вас попросить написать комментарии к обоим задачам.
И еще почему во 2 задаче такой странный пример, в котором кроме количества подсписков нужно вводить 0 и nil?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36614 / 20339 / 4224
Регистрация: 12.02.2012
Сообщений: 33,675
Записей в блоге: 13
11.12.2012, 20:08 6
Начну "с конца". Такой странный интерфейс объясняется тем, что в muLisp нет необязательных параметров (со значениями по умолчанию). А программы используют накопительные параметры (их приходится задавать явно).
Впрочем, если это напрягает, можно ввести функции-оболочки:

Lisp
1
2
(defun div-list! (lst n)
   (div-list lst n 0 nil nil)
и, соответственно:

Lisp
1
2
3
(defun num-counter! (lst)
  (num-counter lst sum num)
)
Теперь можно вызывать функции без указания "лишних" параметров:

Lisp
1
(div-list! lst n)
и

Lisp
1
(num-counter! lst)
Добавлено через 53 минуты
Вот решение второй задачи, пригодное для muLisp:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun ncount (lst n c)
  (cond ((null lst) c)
        ((= n (car lst)) (ncount (cdr lst) n (+ c 1)))
        (t (ncount (cdr lst) n c))))  
 
(defun lcount (lst n m r)
  (cond ((null n) (lcount lst 1 (apply 'max lst) nil))
        ((<= n m) (lcount lst (+ n 1) m (append r (list (ncount lst n 0)))))
        (t r)))
        
(defun lcount! (lst)
   (lcount lst nil nil nil))
 
==> lcount!
 
(lcount! '(1 2 3 1 2 3 3 5 5 6 8))
 
==> (2 2 3 0 2 1 0 1)
0
11.12.2012, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2012, 20:08
Помогаю со студенческими работами здесь

Мне нужно уменьшть размер проги
Прога весит 400 кб, UPX сжал до 186 Кб, как мне её ещё сжать?

2 проги по ассемблеру нужно сдать до 30.05.2011
1. Составить программу вычисления суммы 5-ти слов в памяти от адреса start_adr в сегменте данных....

Можите написать 3 проги на С(4.20 5.20 6.20)
Я просто не особо понимаю язык С,помогите написать мне их пожалуйста. Зарание спасибо.

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


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

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