4 / 4 / 0
Регистрация: 27.11.2010
Сообщений: 27

Превратить список с парной количеством элементов в ассоциативной список

16.11.2013, 15:38. Показов 1409. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова списки:
Дан список (a b c d ...) с парной количеством элементов. Превратить его в ассоциативной список. В качестве ключей взять элементы списка. В качестве значений - ИХ порядковые номера.
Как то так
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2013, 15:38
Ответы с готовыми решениями:

Функционал: каждые соседние два элемента списка с четным количеством элементов превратить в двухэлементный список
Здравствуйте! помогите пожалуйста со следующим заданием Определить функционал, который каждые соседние два элемента списка из парным...

Дан список (a b) (b c) (c d) .). Преобразовать его в ассоциативной список
Дан список ((a b) (b c) (c d) ...). Преобразовать его в ассоциативной список. В качестве ключей взять первые элементы вложенных списков. В...

Дан список чисел парной длины
Дан список чисел парной длины (1 2 3 4 ...), и две двоарные функции +, и -. Определить функционал, который применяет каждую из этих функций...

14
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38166 / 21101 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
16.11.2013, 19:14
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
(defun mk-asso (lst &optional (n 1))
  (cond ((null lst) nil)
        (t (cons (cons (car lst) n) (mk-asso (cdr lst) (+ n 1))))))
 
==> mk-asso
 
(mk-asso '(a b c d e f))
 
==> ((a . 1) (b . 2) (c . 3) (d . 4) (e . 5) (f . 6))
3
4 / 4 / 0
Регистрация: 27.11.2010
Сообщений: 27
16.11.2013, 22:25  [ТС]
Catstail, спасибо Вам!)
0
493 / 426 / 56
Регистрация: 29.04.2011
Сообщений: 443
16.11.2013, 23:22
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun ASSO (l l2)
    (if l
        (cons (cons (car l) (car l2)) (ASSO (cdr l) (cdr l2)))
        nil))
 
(ASSO '(a b c d e) '(1 2 3 4 5))
 
==> ((a . 1) (b . 2) (c . 3) (d . 4) (e . 5))
 
 
 
 
(defun ASSO (l l2)
    (mapcar 'cons l l2))
 
(ASSO '(a b c d e) '(1 2 3 4 5))
 
==> ((a . 1) (b . 2) (c . 3) (d . 4) (e . 5))
2
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
16.11.2013, 23:50
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
(defun cons-n (w &optional (n 1))
  (when  w (cons (cons (car w) n) (cons-n (cdr w) (1+ n)))))
 
> (cons-n '(11 12 13 14))
((11 . 1) (12 . 2) (13 . 3) (14 . 4))
3
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
17.11.2013, 00:09
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
(defun F (ls)
  (let ((n 0))
    (mapcar #'(lambda (x) (cons x (incf n))) ls)))
 
> (F '(a b c d e))
((a . 1) (b . 2) (c . 3) (d . 4) (e . 5))
3
 Аватар для nullxdth
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
17.11.2013, 02:45
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
(defun f (xs)
  (iter (for i from 1)
        (for x in xs)
        (collect (cons x i))))
3
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
17.11.2013, 10:35
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
(defun cons-n (w)
  (loop for a in w
        for b upfrom 1
        collect (cons a b)))
 
> (cons-n '(11 12 13 14))
((11 . 1) (12 . 2) (13 . 3) (14 . 4))
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
(defun cons-n (w)
  (loop for a in w
        for b from 1
        collect (cons a b)))
 
> (cons-n '(11 12 13 14))
((11 . 1) (12 . 2) (13 . 3) (14 . 4))
4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38166 / 21101 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
17.11.2013, 17:57
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
8
(defun task (lst)
  (mapcar 'cons lst (range 1 (length lst))))
 
==> task
 
(task '(a b c d e f))
 
==> ((a . 1) (b . 2) (c . 3) (d . 4) (e . 5) (f . 6))
2
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 4
19.11.2013, 23:22
А можно в лиспе использовать результат 1-й функции, как список для второй?

вот например есть 2 функции:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun with-pairs (f w)
    (when w 
        (cons 
            (funcall f (car w) (cadr w)) 
            (with-pairs f (cddr w))
        )
    )
)
WITH-PAIRS
 
CL-USER 2 > 
(with-pairs #'list '(a b c d e f g h))
((A B) (C D) (E F) (G H))
и 2-я
Lisp
1
2
3
4
5
6
7
8
9
10
CL-USER 3 > 
(defun pairs-alist (xs)
  (mapcar #'(lambda (x)
              (cons (first x) (second x)))
          xs))
PAIRS-ALIST
 
CL-USER 4 > 
(pairs-alist '((A B) (B C) (E F) (G H))) 
((A . B) (B . C) (E . F) (G . H))
Их можно обьединить и заставить работать как одно целое, чтоб при вводе '(a b c d e f g h) мы получили ассоциативный список (точечную пару) (A . B) (B . C) (E . F) (G . H)?
спасибо
0
 Аватар для _sg
4706 / 4401 / 380
Регистрация: 12.05.2012
Сообщений: 3,100
19.11.2013, 23:29
Лучший ответ Сообщение было отмечено как решение

Решение

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(defun with-pairs (f w)
    (when w 
        (cons 
            (funcall f (car w) (cadr w)) 
            (with-pairs f (cddr w)))))
 
(defun pairs-alist (xs)
  (mapcar #'(lambda (x)
              (cons (first x) (second x)))
          xs))
 
(defun cons-pairs (f w)
  (pairs-alist (with-pairs f w)))
 
> (cons-pairs #'list '(a b c d e f g h))
((A . B) (C . D) (E . F) (G . H))
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38166 / 21101 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
19.11.2013, 23:35
Лучший ответ Сообщение было отмечено как решение

Решение

Естественно:

Lisp
1
2
(defun composition(f w)
 (pairs-alist  (with-pairs f w)))
2
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 4
19.11.2013, 23:44
Спасибо огромное
0
 Аватар для nullxdth
2304 / 1063 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
20.11.2013, 05:41
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Catstail Посмотреть сообщение
Естественно
Эх, это разве композиция Вот, Композиция:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(in-package :cl-user)
 
(let ((modules (list :alexandria :iterate)))
  (mapc #'require     modules)
  (mapc #'use-package modules))
 
(defun with-pairs (f xs)
  (iter (for (x1 x2) on xs by #'cddr)
        (collect (funcall f x1 x2))))
 
(defun pairs-alist (xs)
  (iter (for (x1 x2) in xs)
        (collect (cons x1 x2))))
 
(pairs-alist (with-pairs #'list (list 1 2 3 4)))
 
(let ((f (compose #'pairs-alist
                  (curry #'with-pairs #'list))))
  (funcall f (list 1 2 3 4 5 6)))
3
20.11.2013, 10:24

Не по теме:


Разговор новых русских:
- Сколько стоит твой галстук?
- $400!
- Где покупал?
- Там-то...
- Ну, и дурак! Я знаю магазин, где такой галстук стоит $800!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2013, 10:24
Помогаю со студенческими работами здесь

Дан список чисел парной длины
Дан список чисел парной длины (1 2 3 4 ...), и две функции +, и -. Определить функционал, который применяет каждую из этих функций в...

Создать список L3 из элементов, входящих и в список L1 и в список L2
создать список л3 из элементов входящих и в список л1 и в список л2

Превратить список за схемой
Превратить список за схемой: -->

Превратить список по схеме
превратить список по схеме

Как превратить строку в список
То есть нужен код превращающий a = "Hello" в b = {"H", "e", "l", "l", "o"}


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель микоризы: классовый агентный подход 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