Поиск ближайшего числа в массиве
Версия от 11:36, 28 августа 2019; Tatikoma (обсуждение | вклад)
Содержание
Описание
Есть число N и массив с числами. Нужно найти в массиве ближайшее к N число.
Принцип работы скрипта:
Массив с числами разбивается на 2 массива. В одном числа, которые меньше N, во втором, которые больше N.
Из первого массива берётся последнее число, оно будет ближайшим из тех что меньше N.
Из второго берётся первое число, оно будет ближайшим из тех что больше N.
Из двух чисел выбирается ближайшее к 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
Смотрите также
Массивы
Load_array
Save_array
If
For