Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
jm
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 19

Разбить список на подсписки с элементами, кратными n

26.11.2014, 15:26. Показов 2833. Ответов 28
Метки нет (Все метки)

Здравствуйте!
Подскажите с решением данной задачи:
Разбить список целых чисел на подсписки, сохраняя порядок элементов: в первом списке содержатся элементы исходного списка, кратные 2; во втором - элементы, кратные 3; в третьем - элементы, кратные 4; и так далее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2014, 15:26
Ответы с готовыми решениями:

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

Функция, разбивающая список на подсписки
Добрый день Не могли бы вы подсказать мне, как сделать функцию, которая разбивает список элементов таким образом: Допустим, на вход...

Поделить список на подсписки длинны 1, 2, 3
Разбить список на подсписки длинны 1, 2, 3… Помогите написать задачу без рекурсии, не могу разобраться с ошибкой //Эта функция...

28
jm
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 19
26.11.2014, 21:25  [ТС]
вот
Миниатюры
Разбить список на подсписки с элементами, кратными n  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38207 / 21140 / 4311
Регистрация: 12.02.2012
Сообщений: 34,752
Записей в блоге: 14
26.11.2014, 21:38
Интересно... Надо спросить Lambdik-а или Ur_Naz-а; они объяснят.
1
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
26.11.2014, 22:21
А что тут непонятно? Опцианальные имена в автолиспе задаются так
Lisp
1
2
3
4
5
(defun func (var1 var2 / optional-var1 optional-var2)
  (progn
    (setq optional-var1 (<expression>))
    (setq optional-var2 (<expression>))
    ...))
Имена функций в лиспе говорящие, так что не сложно найти что-то похожее в документации и модифицировать программу с учетом ограничений/расширений своего диалекта. Собственно проблемы не вижу, если что непонятно, то задавайте вопросы. А темы аля "хочу готовое решение" наших автолисперов не привлекают.
2
jm
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 19
26.11.2014, 22:45  [ТС]
castorsky, я выше кажется опубликовала свой код, который работает, и меня устраивает - для меня задача пока решена, так что проблемы я тоже не вижу и "аля готовое решение" не выпрашиваю
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
26.11.2014, 23:08
зубастая какая барышня. Вот императивное решение на автолиспе, только я не могу понять почему цикл while ни одного раза не срабатывает. Пусть автолисперы глянут.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(defun foo (lst /
            counter
            high-margin
            nested-lambda
            return-value
            compare-values)
  (progn
    (setq counter 2)
    (setq high-margin (apply 'max lst))
    (setq nested-lambda
           (lambda (/ ret-val)
             (foreach n lst
               (if (= (rem n counter) 0)
                 (setq ret-val (append ret-val (list n)))
                 nil)
               retval)))
    (setq return-value '(nil))
    (while (<= counter high-mrgin)
      (progn
        (setq return-value (append return-value (list (nested-lambda))))
        (setq counter (1+ counter))))
    return-value))
Добавлено через 3 минуты
Цитата Сообщение от jm Посмотреть сообщение
выше кажется опубликовала свой код
не вижу что-то, зачем скрины делать, когда можно скопировать текст.
1
jm
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 19
27.11.2014, 05:26  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
не вижу что-то, зачем скрины делать, когда можно скопировать текст.
сastorsky, скрин необходим был, чтобы показать Catstail как его решение работает в моей среде (vital lisp for autocad); свой код выше выложила:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun FN (SP)
    (setq M 0 I 2)
    (foreach EL SP (cond ((> EL M) (setq M EL)))
    ) 
    (while (<= I M)
        (setq SP1 ())
        (foreach EL1 SP 
            (if (= (rem EL1 I) 0) (setq SP1 (cons EL1 SP1)))    
        )       
        (setq I (1+ I))  
        (print (reverse SP1))               
    ) 
)
(FN '(1 2 3 4 5 6 5 7 8 10))
Вывод:
(2 4 6 8 10)
(3 6)
(4 8)
(5 5 10)
(6)
(7)
(8)
nil
(10)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38207 / 21140 / 4311
Регистрация: 12.02.2012
Сообщений: 34,752
Записей в блоге: 14
27.11.2014, 11:20
jm, спасибо за скрин. Для меня вопрос остался открытым.
0
Заблокирован
27.11.2014, 20:02
Цитата Сообщение от Catstail Посмотреть сообщение
Надо спросить Lambdik-а или Ur_Naz-а; они объяснят.
не надо нас спрашивать, лучше не подсовывать автолиспу код на cl
3
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
27.11.2014, 22:19
Я сегодня встал в 4 утра, до компа добрался в 9 вечера. У меня устали глаза и голова.
jm Скрин это хорошо, а код что от руки переписывать?
И что значит "и так далее", совершенно законный вопрос. До бесконечности делить?
Пришлось читать все. Значит это решение Catstail-a №12. Чтобы не вникать, просто заменил let на lambda. print там разве обязательный? А уже вижу, не обязательный.
Catstail Есть функция vl-remove-if-not.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun remove-d (lst n)
  (cond ((null lst) nil)
        ((> (rem (car lst) n) 0) (remove-d (cdr lst) n))
        (t (cons (car lst) (remove-d (cdr lst) n)))))
 
(defun func (lst n res lmax)
  (cond ((> n lmax) res)
        (t ((lambda (rst)
             (if (null rst)
                 (func lst (+ n 1) res lmax)
                 (func lst (+ n 1) (append res (list rst)) lmax)))
            (remove-d lst n))))) 
 
(defun task (lst)
  (func lst 2 nil (apply '+ lst)))
 
Command: (task '(1 2 3 4 11 2 3 4 7 23 18 19 11 17))
((2 4 2 4 18) (3 3 18) (4 4) (18) (7) (18) (11 11) (17) (18) (19) (23))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2014, 22:19

Обратить список и все его подсписки на любом уровне
1. Определите функцию, обращающую список и все его подсписки на любом уровне, например, (a b (c d) e) -&gt; (e (d c) b a). Я...

Помогите определить функцию TOTREVERSE которая реверсирует список и его подсписки
Помогите определить функцию TOTREVERSE которая реверсирует список и его. (TOTREVERSE ’(A (B C) D (E) F))) -&gt; (( F (E))D (C B) A))

Создать список на основе исходного, в котором заменить все подсписки на элемент e
Помогите решить задание, не могу въехать совсем Создать список на основе исходного, в котором заменить все подсписки на элемент e.

Разбить список на подсписки
Доброго времени суток! Помогите решить задачу, беспощадная сессия - с Хаскелем еще не разобрался, а экзамен уже через пару дней.. ...

Разбить список на подсписки
собственно сама задача: Список List2 получен из списка List1 путём группировки в подсписки троек элементов, начиная с первого. Если...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru