Написать написать функцию, возвращающую номер минимального элемента в простом списке - Lisp

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

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

написать функцию, возвращающую номер минимального элемента в простом списке.

Решение задачи: «Написать написать функцию, возвращающую номер минимального элемента в простом списке»

textual
Листинг программы
  1. (defun min-pos (lst)
  2.   (let* ((min (apply 'min lst))
  3.          (lm  (mapcar 'list lst (range 1 (length lst)))))
  4.    (mapcar 'cadr (remove-if-not #'(lambda (x) (= (car x) min)) lm))))
  5.  
  6. ==> min-pos
  7.  
  8. (min-pos '(-10 5 0 -100 10))
  9.  
  10. ==> (4)
  11.  
  12. (min-pos '(-10 5 0 -100 10 6 7 -100 8))
  13.  
  14. ==> (4 8)

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

В коде определена функция min-pos. Она принимает один аргумент lst, который должен быть списком. Внутри функции создаются две переменные:

  1. min — в ней будет храниться минимальный элемент из списка lst.
  2. lm — в ней будет создан список кортежей, в которых сначала будет указан номер элемента из списка lst, а затем его значение. Сначала с помощью функции apply в переменной min вычисляется минимальный элемент из списка lst. Затем с помощью функции mapcar и функции list создается список кортежей, в которых сначала указывается номер элемента из списка lst, а затем его значение. Далее с помощью функции remove-if-not и лямбда-функции, которая сравнивает первый элемент каждого кортежа со значением переменной min, из списка lm удаляются кортежи, у которых первый элемент не равен min. В конце с помощью функции mapcar и функции cadr из списка кортежей, полученного после удаления ненужных кортежей, извлекаются значения (номера элементов и их значения), которые возвращаются в качестве результата работы функции min-pos.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы