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

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

13.01.2013, 14:46. Показов 988. Ответов 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
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
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
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
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
4710 / 4405 / 380
Регистрация: 12.05.2012
Сообщений: 3,102
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
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru