Связанный: Запрограммируйте мою микроволновую печь . Вдохновленный генерировать ленивый микроволновый вход .
Ленивое значение неотрицательного целого числа N является наименьшим из целых чисел, которые являются ближайшими к N, в то время как все их цифры идентичны.
Возврат (любым способом) ленивым значение заданной (любым способом) N .
N ≤ наибольшее целое число, которое ваш язык представляет в неэкспоненциальной форме по умолчанию. 1000000 (Из-за этого слишком высокого требования потеряно много интересных решений.)
Тестовые случаи:
0 → 0
8 → 8
9 → 9
10 → 9
16 → 11
17 → 22
27 → 22
28 → 33
100 → 99
105 → 99
106 → 111
610 → 555
611 → 666
7221 → 6666
7222 → 7777
Рассматриваемый коллега доказал, что не будет никаких связей: за исключением 9/11, 99/111 и т. Д., Для которых один короче другого, два последовательных правильных ответа всегда находятся на расстоянии нечетного расстояния, поэтому никакое целое число не может быть точно равноудалено от них.
Number.MAX_SAFE_INTEGER
любым из8e16 - 1
них, потому что выражается как8e16
. К сожалению, похоже, что единственным способом было бы жестко запрограммировать максимальный результат. +1 тем не менее.Желе, 16 байт
Попробуйте онлайн!
Как это работает
источник
Oracle SQL 11.2, 200 байт
Un-golfed
источник
Pyth - 26 байт
Этот ответ не всегда возвращает наименьшее значение в связи, но это не указано в спецификации, поэтому ожидаем уточнениядля 3 байтов.Тестовый пакет .
источник
Pyth, 16 байт
Попробуйте онлайн: демонстрация или тестовый набор
Объяснение:
источник
MATL , 25 байт
Использует грубую силу, поэтому для больших чисел это может занять некоторое время.
Попробуйте онлайн!
источник
Perl, 32
Основано на прекрасном решении JavaScript от Neil.
Начинает терпеть неудачу в
5e15
источник
Mathematica, 122 байта
Функция с именем х.
источник
JavaScript (ES6), 59 байт
Рекурсивное решение (56 байт)
Это немного короче, но не работает,
n > 1111111110
потому что превышен максимальный размер стека вызовов, поэтому он технически недопустим.объяснение
Перебирает все ленивые числа, пока не доберется до первого, который больше чем
n
, затем сравниваетn
это и предыдущее число, чтобы определить результат.источник
Japt , 18 байт
Попробуйте онлайн!
По методике Нейла
Неконкурентное решение :
источник
*9+4 h /9|0
:-)05AB1E , 20 байтов
Попробуйте онлайн!
источник
Mathematica, 56 байт
Чистая функция с первым аргументом
#
, работает для входов до10^6
.Для неотрицательного числа
n
и цифрыd
,10^n-1 = 99...9
(9
повторныеn
раза), поэтомуd(10^n-1)/9 = dd...d
(d
повторяющиесяn
раз). СоздаетTable
значения для0 <= n <= 6
и0 <= d <= 9
, затем сглаживается таблица, находит список элементовNearest
до#
и беретаMin
.Я считаю, что эта версия будет работать для произвольно больших целых чисел:
источник