Написать именованую функцию - Lisp
Формулировка задачи:
Здравствуйте!
Нужно помощь в написании именованной функции, которая создает список из элементов других списков!
Только сегодня начал изучать Lisp поэтому такие трудности.
Извените в итоге должен получиться список (G G I)! так как подсчет элементов в списке начинается с нуля! извините!
Спасибо если кто то пытался найти для меня решения!
Например!
естьтри
списка(G55 G66 G777), (9(FG)I), (NILTDJ(IIJJ))
. Функция должна составить новый списокиз 3 символа первого списка
,второго символа второго списка
,шестого символа третьего списка
. В итоге должен получиться список(5 F J).
пытаюсь делать что то так, но понимаю что это бред!(DEFUN FOO (lst1, lst2, lst3)
(list (NTH 3 '(lst1)) (NTH 2 '(lst2)) (NTH 6 '(lst3)))
(FOO (G55 G66 G777) (9(FG)I) (NILTDJ(IIJJ)))
(rds)
В итоге должен получиться список (5 F J).
Я приношу свои извинения, наверно сказывается то, что спал сегодня 4 часа за двое суток!!!
Я немного неправильно написал условие!))
Во первых, три списка вот таких:
есть три списка
(G5 5 G66 G777), (9 (F G) I), (N I L T D J(II JJ)).
вот мое решение!( DEFUN FOO ( lst1 lst2 lst3 )
( list lst1 lst2 lst3 ) )
(FOO (NTH 3 '(G5 5 G66 G777)) (NTH 2 '(9 (F G) I)) (NTH 6 '(N I L T D J(II JJ))) )
(rds)Решение задачи: «Написать именованую функцию»
textual
Листинг программы
(defun task (ini-list num-list) (mapcar #'(lambda (l n) (nth n l)) ini-list num-list)) (task '((G 5 5 G 6 6 G 7 7 7) (9 (F G) I) (N I L T D J (I I J J))) '(3 2 6)) ==> (G i (i i J J))
Объяснение кода листинга программы
В этом коде:
- Создаётся функция
task, которая принимает два аргумента:ini-listиnum-list. - Функция
mapcarприменяется кini-listиnum-listс использованием анонимной функции. Анонимная функция принимает два аргумента:lиn. Внутри неё происходит вызов функцииnth, которая возвращает элемент списка с указанным индексом. - Результатом работы функции
taskявляется список, который состоит из элементов, полученных на предыдущем шаге. - В основной части кода вызывается функция
taskс двумя аргументами:ini-listиnum-list. Значения этих аргументов соответствуют указанным в вопросе. - Результатом работы функции является список
(G i (i i J J)).