Поиск в списке числа, ближайшего к заданному
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Поиск в списке числа, ближайшего к заданному

Поиск в списке числа, ближайшего к заданному

Ответ
Поиск в этой теме
Непрочитано 24.04.2020, 20:51 #1
Поиск в списке числа, ближайшего к заданному
Chief
 
Регистрация: 21.08.2017
Сообщений: 3

Дано: список чисел вида (12.3 34.4 55.2 78.0 103.3 ..... )
Требуется функция, результатом которой будет число из этого списка, ближайшее по значению к заданному, например:
(funn 70 spisok)
78.0
Просмотров: 2204
 
Непрочитано 24.04.2020, 21:51
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,402


Нечто типа (пишу без проверки и с телефона)
Код:
[Выделить все]
(car (vl-sort lst (function (lambda(a b)(< (abs (- a value))(abs (- b value)))))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.03.2025, 10:46
#3
getr

Конструктор
 
Регистрация: 06.04.2005
Из тех ворот-откуда весь народ.
Сообщений: 361
<phrase 1=


Насколько правильным будет такое оформление кода?
Код:
[Выделить все]
 ;;;функция возвращает ближайшее число из заданного списка
;;; 23.5-> 23
;;; 23.6-> 24
;;; пример вызова (rad40 23.6)

(defun rad40 (chislo /)
;;;нормальные размеры ряд Ra40 + дополнительные размеры гост 6636-69*
(setq lst '(20 21 22 23 24 25 26 27 28 30 32 34 35 36 38 40 42 45 48 50 52 53 55 56 58 60 62 63 65 67 70 71
            73 75 78 80 82 85 88 90 92 95 98 100 102 105 108 110 112 115 118 120 125 130 135 140 145
            150 155 160 165 170 175 180 185))
(setq value chislo)
(car (vl-sort lst (function (lambda (a b) (< (abs (- a value)) (abs (- b value)))))))
);end defun
__________________
"Мнение не бывает ни истинным, ни ложным, а лишь полезным в жизни или бесполезным. ",- Ауробиндо
И не надо делать удивленных движений руками.
getr вне форума  
 
Непрочитано 24.03.2025, 11:08
#4
name02


 
Регистрация: 10.01.2020
Сообщений: 415


Нужно переменную lst сделать локальной, a value - убрать, вместо неё используй value:
Код:
[Выделить все]
 ;;;функция возвращает ближайшее число из заданного списка
;;; 23.5-> 23
;;; 23.6-> 24
;;; пример вызова (rad40 23.6)

(defun rad40 (value / lst)
  ;;;нормальные размеры ряд Ra40 + дополнительные размеры гост 6636-69*
  (setq	lst '(20   21	22   23	  24   25   26	 27   28   30	32   34	  35   36   38	 40   42   45	48   50	  52
	      53   55	56   58	  60   62   63	 65   67   70	71   73	  75   78   80	 82   85   88	90   92	  95
	      98   100	102  105  108  110  112	 115  118  120	125  130  135  140  145	 150  155  160	165  170  175
	      180  185
	     )
  ) ;_ end of setq
  (car
    (vl-sort lst
	     (function
	       (lambda (a b) (< (abs (- a value)) (abs (- b value))))
	     ) ;_ end of function
    ) ;_ end of vl-sort
  ) ;_ end of car
) ;_ end of defun
name02 вне форума  
 
Непрочитано 24.03.2025, 13:53
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Я бы и список параметром в функцию передавал...
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 24.03.2025, 14:36
#6
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,808


если разница между испытуемым числом и соседними справа и слева в списке будет одинаковой, то выберется только левое меньшее число.
__________________
K Lisp
koMon вне форума  
 
Непрочитано 26.03.2025, 14:16
#7
getr

Конструктор
 
Регистрация: 06.04.2005
Из тех ворот-откуда весь народ.
Сообщений: 361
<phrase 1=


Спасибо всем.Всё получилось.
__________________
"Мнение не бывает ни истинным, ни ложным, а лишь полезным в жизни или бесполезным. ",- Ауробиндо
И не надо делать удивленных движений руками.
getr вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Поиск в списке числа, ближайшего к заданному



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
LISP. Команда apropos - поиск имен функций и переменных rebus Готовые программы 0 24.03.2018 17:39
Поиск совпадений в списке Кирилл Гордей Прочее. Программное обеспечение 4 14.09.2014 23:27
EXEL. Возврат ближайшего большего или меньшего числа. Layout Прочее. Программное обеспечение 13 17.02.2012 14:16
Поиск заданного значения в списке swkx Программирование 8 01.06.2010 18:32