Форум программистов, компьютерный форум, киберфорум
Языки JVM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/21: Рейтинг темы: голосов - 21, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 31.10.2013
Сообщений: 15

Clojure Определить функционал который после каждого элемента списка вставляет его порядковый номер

13.11.2013, 12:46. Показов 4961. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание: определить функционал который после каждого элемента списка вставляет его порядковый номер. Например: (a s d f g) --> (a 1 s 2 d 3 f 4 g 5). Длина списка не определена.

я сделала эту задачку без функционалов:
Lisp
1
2
3
4
5
6
(defun num (lst &optional(n 1))
    (cond 
        ((null lst) nil)
        (T (append (list (car lst) n) (num (cdr lst) (+ n 1))))
    )
)
Помогите доделать так, чтоб приспособить туда функционалы.
Спасибо)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.11.2013, 12:46
Ответы с готовыми решениями:

Как создать список,чтобы после каждого элемента списка был вставлен его порядковый номер?
Как создать список,чтобы после каждого элемента списка был вставлен его порядковый номер?

После каждого элемента в списке, поставить его порядковый номер
Добрый день. Дан список вида (a b c d e). После каждого элемента этого списка, нужно поставить его порядковый номер. Список дан один....

Вывести для каждого четного элемента массива его порядковый номер
написать программу, которая создает массив из N целых чисел и используя процедуру вывести для каждого четного элемента его порядковый номер

28
 Аватар для smoke853
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
21.02.2014, 12:01
Студворк — интернет-сервис помощи студентам
route66, вы кстати могли использовать вместо:
Lisp
1
(apply concat (map (fn [args] (...)))
Lisp
1
2
(mapcat (partial list) ...) или 
(mapcat #(list % %2) ...)
2
493 / 426 / 56
Регистрация: 29.04.2011
Сообщений: 443
21.02.2014, 13:16
Цитата Сообщение от Catstail Посмотреть сообщение
route66, в Clojure есть range?
Да, только здесь, в отличие от HomeLisp, верхняя граница n задается, как n+1.

HomeLisp v1.13.28 от 23.11.13:
(mapcan #'list '(1 2 3) '(a b c))
EVFUN: Не найдена функция MAPCAN
Catstail, можете выложить последнюю версию HL? у меня вроде свежая, от 23.11.13, но mapcan еще не включен.
smoke853, спасибо,
получается, что mapcan из CL и mapcat из Clojure - суть одно и то же.
Lisp
1
2
(mapcan #'list '(1 2 3) '(a b c)) ==> (1 a 2 b 3 c)
(mapcat list '(1 2 3) '(a b c)) ==> (1 a 2 b 3 c)
1
 Аватар для smoke853
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
21.02.2014, 13:39
Цитата Сообщение от route66 Посмотреть сообщение
получается, что mapcan из CL и mapcat из Clojure - суть одно и то же.
Получается что так.

Не по теме:

Я в посте выше немного затупил :) Частичное применение или литерал функции в данном случае то и не нужны, как оказалось :)

1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
21.02.2014, 18:09
Последняя версия 1.13.32:
Как обычно - экзешники и *.stb - в корень; lib-k.lsp - в \lib
Вложения
Тип файла: zip HomeLisp-13.32.zip (1.18 Мб, 16 просмотров)
4
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
21.02.2014, 19:13
Что-то не то.
Миниатюры
Clojure Определить функционал который после каждого элемента списка вставляет его порядковый номер  
2
1075 / 968 / 113
Регистрация: 04.11.2012
Сообщений: 1,013
21.02.2014, 19:30
Вернул обратно только homelispide.exe все нормально заработало. И mapcan уже есть.
2
493 / 426 / 56
Регистрация: 29.04.2011
Сообщений: 443
21.02.2014, 19:39
На 7-ке полет нормальный. mapcan есть, подтверждаю
Миниатюры
Clojure Определить функционал который после каждого элемента списка вставляет его порядковый номер  
2
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
28.02.2014, 22:39
range? =)
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
INSOMNIA> (set-dispatch-macro-character 
           #\# #\r
           #'(lambda (s ch1 ch2)
               (declare (ignore ch1 ch2))
               `(let ((n ,(read s t () t)))
                  (loop for a from 0 to n collect a))))
T
INSOMNIA> #r10
(0 1 2 3 4 5 6 7 8 9 10)
INSOMNIA> #r15
(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
INSOMNIA> (read-from-string "#r15")
(LET ((N 15))
  (LOOP FOR A FROM 0 TO N
        COLLECT A))


Добавлено через 10 минут
Lisp
1
2
3
4
5
INSOMNIA> (defmacro e-read-from-string (e)
            (read-from-string e))
E-READ-FROM-STRING
INSOMNIA> (e-read-from-string "#r10")
(0 1 2 3 4 5 6 7 8 9 10)
1
defun
603 / 617 / 44
Регистрация: 30.04.2011
Сообщений: 702
06.03.2014, 02:30
как оказалось, с вектором таких проблем нет:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
INSOMNIA> (set-dispatch-macro-character
           #\# #\#
           #'(lambda (x ch1 ch2)
               (declare (ignore ch1 ch2))
               (let ((s (read x t () t))) 
                 (typecase s
                   (symbol (string s))
                   (string s)
                   (number (map 'vector #'identity (loop for a from 0 to s collect a)))))))
T
INSOMNIA> ##0
#(0)
INSOMNIA> ##fun
"FUN"
INSOMNIA> ##"fun"
"fun"
INSOMNIA> (read-from-string "##3")
#(0 1 2 3)
3
INSOMNIA> (equalp ##3 (read-from-string "##3"))
T
Добавлено через 19 минут
или так
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
INSOMNIA> (set-dispatch-macro-character 
           #\# #\[
           #'(lambda (x c1 c2)
               (declare (ignore c1 c2))
               (let ((p (read-delimited-list #\] x t)))
                 (cons 'list 
                       (loop 
                          for a from (first p) to (second p)
                          collect a)))))
T
INSOMNIA> #[10 20]
(10 11 12 13 14 15 16 17 18 19 20)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2014, 02:30

Можно ли как-то получить порядковый номер элемента из этого списка (тот, который выбираешь)?
В Excel сделал список из диапазона ячеек через ДанныеПроверкаСписок. Можно ли как-то получить порядковый номер элемента из этого списка...

Процедура: вывести для каждого четного элемента массива его порядковый номер
написать программу котория создает массив из N целых чисел и используя процедуру вывести для каждого четного элемента его порядковый номер

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

Определить максимальный элемент каждого четного столбца массива и его порядковый номер
Дан двумерный массив X, где значения элементов массива и их количество вводятся с клавиатуры. Определить максимальный элемент каждого...

Определить максимальный элемент и его порядковый номер для каждого столбца матрицы
Помогите,пожалуйста,написать программу в паскаль. Ввести с клавиатуры матрицу D1. Определить максимальный элемент и его порядковый номер...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru