Написать именованую функцию - Lisp

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Нужно помощь в написании именованной функции, которая создает список из элементов других списков! Только сегодня начал изучать Lisp поэтому такие трудности.

Например!

есть

три

списка

(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).
Извените в итоге должен получиться список (G G I)! так как подсчет элементов в списке начинается с нуля! извините!
Я приношу свои извинения, наверно сказывается то, что спал сегодня 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))

Объяснение кода листинга программы

В этом коде:

  1. Создаётся функция task, которая принимает два аргумента: ini-list и num-list.
  2. Функция mapcar применяется к ini-list и num-list с использованием анонимной функции. Анонимная функция принимает два аргумента: l и n. Внутри неё происходит вызов функции nth, которая возвращает элемент списка с указанным индексом.
  3. Результатом работы функции task является список, который состоит из элементов, полученных на предыдущем шаге.
  4. В основной части кода вызывается функция task с двумя аргументами: ini-list и num-list. Значения этих аргументов соответствуют указанным в вопросе.
  5. Результатом работы функции является список (G i (i i J J)).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5