Поиск ближайшего числа в массиве
Версия от 21:54, 27 августа 2019; Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == Есть число N и массив с числами. Нужно найти в массиве ближайшее к N число. <br...»)
Содержание
Описание
Есть число N и массив с числами. Нужно найти в массиве ближайшее к N число. <br>Принцип работы скрипта: <br>Массив с числами разбивается на 2 массива. В одном числа, которые меньше N, во втором, которые больше N. <br>Из первого массива берётся последнее число, оно будет ближайшим из тех что меньше N. <br>Из второго берётся первое число, оно будет ближайшим из тех что больше N. <br>Из двух чисел выбирается ближайшее к N.
Версия
1.0
Минимальная версия UOPilot
2.38
Скрипт
set linedelay 0 // задержка между строк log mode compact // компактный режим лога init_arr %a 10 20 30 40 50 60 70 80 90 100 // массив с числами sort_array %a // сортировка массива (нужна если массив не сортирован) set #N random(120) // псевдослучайное число от 0 до 119 (число N) set #z 0 set #z1 0 set size(%b) set size(%b1) for #i 1 size(%a) if #N > %a [#i] set #z #z + 1 set %b [#z] %a [#i] else set #z1 #z1 + 1 set %b1 [#z1] %a [#i] end_if end_for if size(%b) != 0 and size(%b1) != 0 set #min #N - %b [size(%b)] set #max %b1 [1] - #N if #min < #max // если заменить на: if #min <= #max, то, к примеру, 35 будет ближе к 30, чем к 40 set #x %b [size(%b)] else set #x %b1 [1] end_if else if size(%b) = 0 set #x %a [1] else set #x %a [size(%a)] end_if end_if log N = #N, ближайшее число: #x // set #pos indexof(%a (#x)) // если нужно узнать позицию ближайшего числа в массиве // log Позиция числа в массиве: #pos end_script
Смотрите также
Массивы <br>Load_array <br>Save_array <br>If <br>For