Как лучше решить задачу на поиск ближайшего числа? Приветствую. Вот суть задачи:
Есть функция findClosest, которая принимает неотсортированный массив чисел, число которое надо найти и функцию-компаратор. Компаратор должен определять одно из 4 возможных типов поведения для findClosest:Если число отсутствует в массиве, то:находить ближайшее меньшее число находить ближайшее большее число находить ближайшее число, но если оно равноудалено от значений массива, брать то, что меньше находить ближайшее число, но если оно равноудалено от значений массива, брать то, что больше Если в массиве нет данных подходящих по условию - вернуть false:
Какие есть изящные решения?

21 Авг 2019 в 06:28
173 +1
1
Ответы
1

Одним из изящных решений задачи может быть следующий код на языке JavaScript:

function findClosest(array, number, comparator) {
let closest = false;
let diff = Infinity;
for (let i = 0; i < array.length; i++) {
if (comparator(number, array[i]) && Math.abs(number - array[i]) < diff) {
closest = array[i];
diff = Math.abs(number - array[i]);
}
}
return closest;
}
// Пример использования
const array = [1, 3, 5, 7, 9];
const number = 6;
const result = findClosest(array, number, (n1, n2) => n1 >= n2);
console.log(result);

Этот код создает функцию findClosest, которая принимает массив чисел, число, которое нужно найти, и функцию-компаратор. Внутри функции происходит поиск ближайшего числа с помощью указанного компаратора.

Для использования можно задать массив чисел и число, которое нужно найти, а также указать нужный компаратор.

Такой подход поможет в элегантном и понятном виде решить задачу на поиск ближайшего числа в массиве.

20 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир