С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 5

Заданный список произвольного уровня вложенности разбить на четыре списка

31.01.2012, 12:09. Показов 2821. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно написать на muLisp программу:
Заданный список произвольного уровня вложенности разбить на четыре списка: в первом – гласные, во втором – согласные, в третьем – цифры, в четвертом – все остальное. Первые три списка должны быть упорядочены и в них не должно быть повторов. Списки результатов объединить в один список списков.
Помогите, пожалуйста!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2012, 12:09
Ответы с готовыми решениями:

Подсчет максимального уровня вложенности сложного списка
Написать функцию которая подсчитывает максимальный уровень вложенности сложного списка вида ((1 (2 4 3 6) 7) 9 8 ((9 10 11) 12 (13 14) 15)...

Запись списка файлов в txt независимо от уровня вложенности
Доброго времени суток! Помоги разобраться. Нужен Bat'ник, пишущий список файлов определенной директории (например, c:\program files) в txt...

Из произвольного списка и числового списка построить новый список
Доброго времени суток, прощу помощи с одной задачкой. Желательно объяснение, а не решение, хотелось бы понять, почему не получается. Из...

16
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
31.01.2012, 14:42
тебе ведь на харде всё разжевали, активируй моск))
0
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 5
31.01.2012, 15:12  [ТС]
Мне разжевывание бесполезно, мне проста нужна работающая программа, у меня нет времени разбираться. Если можете помогите!
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
31.01.2012, 15:59
Цитата Сообщение от PashaKol Посмотреть сообщение
Мне разжевывание бесполезно
это ты сильно) люблю самокритичных людей)
1
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 5
31.01.2012, 16:23  [ТС]
Так как насчет помощи?
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
31.01.2012, 16:58
этот вариант пробовал?
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun f (l)
           (let ((vowels (list 'a 'e 'o 'i 'u 'y))
                 (consonants (list 'b 'c 'd 'f 'g 'h 'j 'k 'l 'm 'n 'p 'q 'r 's 't 'v 'w 'x 'z))
                 (num (list 1 2 3 4 5 6 7 8 9 0)))
             (labels ((flat (l res)
                            (cond ((null l) res)
                                  ((atom l) (cons l res))
                                  ((flat (car l) (flat (cdr l) res))))))
                     (let ((lst (flat l ())) (res))
                       (loop for a in (list vowels consonants num)
                             if (numberp (car a))
                             do (push (sort (intersection a lst) #'<) res)
                             else do (push (intersection a lst) res))
                       (push (set-difference lst (nconc vowels consonants num)) res)
                       (loop for a in res
                             if (symbolp (car a))
                             collect (loop for c in 
                                           (sort (loop for b in a collect (string b))
                                                 #'string<)
                                           collect (intern c))
                             else collect a)))))
1
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
31.01.2012, 17:04
transformator.t, в muLISP же нет ни loop, ни labels.
0
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 5
31.01.2012, 17:06  [ТС]
Я просто не отписался.
Пробовал, там появляются ошибка
0
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
31.01.2012, 17:34
bokunopico, ну вот, я не знаю mulisp, значит нужно взять переписать примитивами))
0
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
31.01.2012, 18:18
Так вроде _sg с харда и переписал всё примитивами. Но ТС настолько ленив и не хочет думать, что не мог подредактировать вариант под божественный muLISP.
Кат
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 pose (w v c n m)
  (cond ((null w) (list (sort-smbs v)
                        (sort-smbs c)
                        (sort-vcn n '<)
                        m))
        ((member (car w) '(a e i o y u))
         (pose (cdr w) (cons (car w) v) c n m))
        ((member (car w) '(b c d f g h j k l m n p q r s t v w x z))
         (pose (cdr w) v (cons (car w) c) n m))
        ((member (car w) '(0 1 2 3 4 5 6 7 8 9))
         (pose (cdr w) v c (cons (car w) n) m))
        (t (pose (cdr w) v c n (cons (car w) m)))))
 
(defun sort-smbs (w)
  (sort (remove-dps w) 'string<))
 
(defun flat (w acc) 
  (cond ((null w) acc)
        ((atom w) (cons w acc))
        ((flat (car w) (flat (cdr w) acc)))))
 
(defun sort-vcn (w p)
  (sort (remove-dps w) p))
 
(defun remove-dps (w)
  (cond ((null w) nil)
        ((member (car w) (cdr w)) (remove-dps (cdr w)))
        (t (cons (car w) (remove-dps (cdr w))))))
 
(defun arrange-vcnm (w)
  (pose (flat w nil) nil nil nil nil))
 
> (arrange-vcnm '(3 (2 a) b (3) b (u 1) c 1 c (!)))
((A U) (B C) (1 2 3) (!))

Мне не особо приятно работать через DOSBox, но вроде запрос обрабатывает без ошибки.
1
0 / 0 / 0
Регистрация: 31.01.2012
Сообщений: 5
31.01.2012, 18:19  [ТС]
ПОМОГИТЕ, ПОЖАЛУЙСТА, ОЧЕНЬ СРОЧНО НУЖНО!!! ВРЕМЕНИ НЕТ НА ИЗУЧЕНИЕ ЯЗЫКА!
0
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
30.12.2012, 12:49
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(defun pose (w &optional v c n m &aux (a (car w)) (d (cdr w)))
  (cond ((null w)
         (list (sort v #'string<) (sort c #'string<) (sort n #'<) m))
        ((member a '(a e i o y u))
         (pose d (pushnew a v) c n m))
        ((member a '(b c d f g h j k l m n p q r s t v w x z))
         (pose d v (pushnew a c) n m))
        ((member a '(0 1 2 3 4 5 6 7 8 9))
         (pose d v c (pushnew a n) m))
        (t (pose d v c n (push a m)))))
 
(defun flat (w &optional acc) 
  (cond ((null w) acc)
        ((atom w) (cons w acc))
        ((flat (car w) (flat (cdr w) acc)))))
 
(defun arrange-vcnm (w)
  (pose (flat w)))
 
> (arrange-vcnm '(3 (2 a) b (3) b (u 1) c 1 c (!)))
((A U) (B C) (1 2 3) (!))
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(defconstant vowels '(a e i o y u))
(defconstant consonants '(b c d f g h j k l m n p q r s t v w x z))
(defconstant digits '(0 1 2 3 4 5 6 7 8 9))
 
(defun flat (w &optional acc) 
  (cond ((null w) acc)
        ((atom w) (cons w acc))
        ((flat (car w) (flat (cdr w) acc)))))
 
(defun arrange-vcd (w)
  (list (loop for v in vowels when (member v w) collect v) 
        (loop for c in consonants when (member c w) collect c)
        (loop for d in digits when (member d w) collect d)))
 
(defun arrange-vcdm (w &aux (u (flat w))(v (arrange-vcd u)))
  (nconc v (list (remove-if #'(lambda (a) (member a (flat v))) u))))
 
> (arrange-vcdm '(3 (2 a a a a) b (3) b (u 1) c 1 c (!)))
((A U) (B C) (1 2 3) (!))
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
30.12.2012, 13:31
Вот решение, работающее в muLisp:

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
35
36
37
38
39
40
41
42
43
;; Уплощение списка
 
(defun flatten (lst)
   (cond ((null lst) nil)
         ((atom (car lst)) (cons (car lst) (flatten (cdr lst))))
         (t (append (flatten (car lst)) (flatten (cdr lst))))))
 
;; Увеличение счетчика вхождения символа
 
(defun incrn (lst n)
   (cond ((= n 0) (cons (+ 1 (car lst)) (cdr lst)))
         (t (cons (car lst) (incrn (cdr lst) (- n 1))))))
 
;; Обработать символ
 
(defun accitem (item)
   (cond ((member item (car *v*)) (setq *v* (cons (car *v*) (list (incrn (cadr *v*) (position item (car *v*)))))))
         ((member item (car *s*)) (setq *s* (cons (car *s*) (list (incrn (cadr *s*) (position item (car *s*)))))))
         ((member item (car *d*)) (setq *d* (cons (car *d*) (list (incrn (cadr *d*) (position item (car *d*)))))))
         (t (setq *o* (cons item *o*)))))
         
;; Обработать список
 
(defun acclst (lst)
   (cond ((null lst) t)
         (t (accitem (car lst)) (acclst (cdr lst)))))
         
;; Вывод результата (удаление нулевых)
 
(defun presres (l1 l2)
   (cond ((null l1) nil)
         ((= 0 (car l2)) (presres (cdr l1) (cdr l2)))
         (t (cons (car l1) (presres (cdr l1) (cdr l2))))))
         
;; Собственно решение
 
(defun task (lst)
   (setq *v* '((a e i o y u) (0 0 0 0 0 0)))
   (setq *s* '((b c d f g h j k l m n p q r s t v w x z) (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))
   (setq *d* '((0 1 2 3 4 5 6 7 8 9) (0 0 0 0 0 0 0 0 0 0 0)))
   (setq *o* Nil)
   (acclst (flatten lst))
   (list (presres (car *v*) (cadr *v*)) (presres (car *s*) (cadr *s*)) (presres (car *d*) (cadr *d*)) *o*))
Миниатюры
Заданный список произвольного уровня вложенности разбить на четыре списка  
1
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
19.11.2014, 10:47
как вариант:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(defconstant vowels '(a e i o y u))
(defconstant consonants '(b c d f g h j k l m n p q r s t v w x z))
(defconstant digits '(0 1 2 3 4 5 6 7 8 9))
 
(defun flat (w)
  (loop for a in w 
        if (and a (atom a)) collect a
        else nconc (flat a)))
 
(defun arrange-vcd (w)
  (list (loop for v in vowels when (member v w) collect v) 
        (loop for c in consonants when (member c w) collect c)
        (loop for d in digits when (member d w) collect d)))
 
(defun arrange-vcdm (w &aux (u (flat w))(v (arrange-vcd u)))
  (nconc v (list (remove-if #'(lambda (a) (member a (flat v))) u))))
 
> (arrange-vcdm '(3 (2 a a a a) b (3) b (u 1) c 1 c (!)))
((A U) (B C) (1 2 3) (!))
2
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
19.11.2014, 11:05
Тут же есть фрилансерский раздел. Обратись туда. За пару сотен вечнозелёных напишут без проблем. А требовать забисплатна за тебя выполнять твои обязанности потому что у тебя якобы нет на это времени - не вполне прилично.
1
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
20.11.2014, 15:03
Цитата Сообщение от transformator.t Посмотреть сообщение
на харде
Где это?
0
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
20.11.2014, 15:19
castorsky, хардфорум.ру, бывший прогз.ру
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2014, 15:19
Помогаю со студенческими работами здесь

Набор символов в формате списка разбить в список чисел и список слов
Всем добрый день! Мне дали задачу написать программу, в которую вводится набор символов в формате списка. после обработки этого списка...

Создать список А содержащий вещественные числа. Разбить список А на 2 списка
создать список А содержащий вещественные числа. разбить список А на 2 списка - отрицательных и положительных чисел. в списке, ...

Массив: Превратить заданный массив с несколькими уровнями вложенности в массив с одним уровнем вложенности.
Добрый день. Необходимо выполнить задание: Дано массив: , ], ]. Написать программу, которая превратит заданный массив с...

Разбить заданный список попалам, на списки с четными и нечетными порядковыми номерами
Здравствуйте. Помогите с такой задачкой, пожалуйста: Разбить заданный список попалам, на списки с четными и нечетными порядковыми...

Превышение уровня вложенности
написал запрос выбрать ИмяРеквизитаОбъектаПотребителя, ВариантПравилаЗаполненияРеквизитов, ИмяРеквизитаОбъектаДокументооборота,...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru