Поиск ближайшего числа в массиве: различия между версиями
Перейти к навигации
Перейти к поиску
Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == Есть число N и массив с числами. Нужно найти в массиве ближайшее к N число. <br...») |
Tatikoma (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
== Описание == | == Описание == | ||
Есть число N и массив с числами. Нужно найти в массиве ближайшее к N число. | Есть число N и массив с числами. Нужно найти в массиве ближайшее к N число. | ||
− | + | <br>Принцип работы скрипта: | |
− | + | <br>Массив с числами разбивается на 2 массива. В одном числа, которые меньше N, во втором, которые больше N. | |
− | + | <br>Из первого массива берётся последнее число, оно будет ближайшим из тех что меньше N. | |
− | + | <br>Из второго берётся первое число, оно будет ближайшим из тех что больше N. | |
− | + | <br>Из двух чисел выбирается ближайшее к N. | |
== Версия == | == Версия == | ||
Строка 36: | Строка 36: | ||
set #min #N - %b [size(%b)] | set #min #N - %b [size(%b)] | ||
set #max %b1 [1] - #N | set #max %b1 [1] - #N | ||
− | if #min | + | if #min < #max // если заменить на: if #min <= #max, то, к примеру, 35 будет ближе к 30, чем к 40 |
set #x %b [size(%b)] | set #x %b [size(%b)] | ||
else | else | ||
Строка 55: | Строка 55: | ||
== Смотрите также == | == Смотрите также == | ||
[[Массивы]] | [[Массивы]] | ||
− | + | <br>[[Load_array]] | |
− | + | <br>[[Save_array]] | |
− | + | <br>[[If]] | |
− | + | <br>[[For]] | |
== Первоисточник == | == Первоисточник == | ||
[[Категория:Библиотека скриптов]] | [[Категория:Библиотека скриптов]] |
Текущая версия на 11:36, 28 августа 2019
Содержание
Описание
Есть число 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