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

Сформировать из простого списка ассоциативный

13.01.2013, 14:46. Показов 983. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сформировать из простого списка ассоциативный, поставив ключи в виде последовательных чисел
вот что попытался написать я:
Lisp
1
2
3
4
5
6
7
8
9
10
11
(setq f (list 11 12 13 14))
(defun F (L1)
    (cond
        ((null L1) nil)
        (t (acons 1 (car L1) q) 
        ;(F (cdr L1))
        )))
(print (F f))
 
==>(F 11 12 13 14)
((1 . 11))
вот в таком виде ключ присваивается одному элементу списка, а когда убираю комментарий, то просто пишет NIL
подскажите как доделать(переделать)?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2013, 14:46
Ответы с готовыми решениями:

Преобразование простого одномерного массива в ассоциативный
Добрый день, форумчане! Помогите, кто знает, какое-нибудь элегантное решение следующего вопроса. Имеется массив Array ( ...

Изменение содержимого простого списка при апдейте выпадающего списка
Добрый день! Суть моей просьбы о помощи такова: На форме (пока) расположен выпадающий список с определенными значениями и ниже...

Удалить атом х из простого списка
удалить атом х из простого списка

6
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
13.01.2013, 14:52
Lisp
1
2
3
4
5
(defun cons-n (w &optional (n 1))
  (when  w (cons (cons n (car w)) (cons-n (cdr w) (1+ n)))))
 
> (cons-n '(11 12 13 14))
((1 . 11) (2 . 12) (3 . 13) (4 . 14))
0
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 137
13.01.2013, 14:57  [ТС]
у меня ругается на
Lisp
1
(1+ n)
пробовал записывать как-то по-другому, ошибка остается.
0
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
13.01.2013, 15:24
Lisp
1
2
3
4
5
6
7
8
9
(defun cons-n (w n)
  (cond ((null w) nil)
        (t (cons (cons n (car w)) (cons-n (cdr w) (+ n 1))))))
 
(defun cons-nx (w)
  (cons-n w 1))
 
> (cons-nx '(11 12 13 14))
((1 . 11) (2 . 12) (3 . 13) (4 . 14))
1
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 137
13.01.2013, 15:27  [ТС]
только-то сам почти так-же сделал,
но как можно увеличивать n при помощи optional?
0
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
13.01.2013, 15:32
Lisp
1
2
3
4
5
6
(defun cons-n (w &optional (n 1))
  (cond ((null w) nil)
        (t (cons (cons n (car w)) (cons-n (cdr w) (+ n 1))))))
 
> (cons-n '(11 12 13 14))
((1 . 11) (2 . 12) (3 . 13) (4 . 14))
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38165 / 21100 / 4307
Регистрация: 12.02.2012
Сообщений: 34,688
Записей в блоге: 14
13.01.2013, 21:41
Lisp
1
2
3
4
5
6
7
8
9
(defun mk-asso (lst)
  (let ((c 0))
    (mapcar #'(lambda (x) (setq c (+ 1 c)) (cons c x)) lst)))
 
==> mk-asso
 
(mk-asso '(q w e r t y)) 
 
==> ((1 . q) (2 . w) (3 . e) (4 . r) (5 . T) (6 . y))
Добавлено через 2 минуты
Или так:

Lisp
1
2
3
4
5
6
7
8
9
(defun mk-asso-r (lst &optional (c 1))
  (cond ((null lst) Nil)
        (t (cons (cons c (car lst)) (mk-asso-r (cdr lst) (+ c 1)))))) 
 
==> mk-asso-r
 
(mk-asso-r '(q w e r t y)) 
 
==> ((1 . q) (2 . w) (3 . e) (4 . r) (5 . T) (6 . y))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2013, 21:41
Помогаю со студенческими работами здесь

TreeView HierarchicalDataTemplate из простого списка
Всем привет. Что-то не могу найти решения на простой вопрос (на более сложные варианты есть примеры) Есть у меня список...

Сортировка списка методом простого обмена
Помогите пожалуйста. Никак не могу разобраться с динамическими вещами. Используя представление последовательности чисел в виде...

Сортировка линейного списка. Алгоритма простого обмена
Используя представление последовательности чисел в виде линейного списка , напишите программу , сортировки этой последовательности при...

Для одноуровневого списка строк сформировать итоговую строку сцеплением всех элементов списка
Определить функцию, которая для одноуровневого списка строк формирует итоговую строку сцеплением всех элементов списка. Элементы в итоговой...

Представить коэффициенты многочлена в виде простого однонаправленных списка
Представить коэффициенты многочлена {a}_{n}{x}^{n}+...+{a}_{1}x+{a}_{0} в виде простого однонаправленных списка и написать процедуру для...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru