Powiązane: Zaprogramuj moją kuchenkę mikrofalową . Zainspirowany przez Generuj leniwe wejście mikrofalowe .
Leniwa wartość nieujemnej liczby całkowitej N jest najmniejszą z liczb całkowitych najbliższych N, podczas gdy wszystkie ich cyfry są identyczne.
Powrót (jakikolwiek sposób) lazy wartość danej (bez względu) N .
N ≤ domyślnie największa liczba całkowita, którą Twój język reprezentuje w postaci nie-wykładniczej. 1000000 (Wiele interesujących rozwiązań zostało utraconych z powodu tego zbyt wysokiego wymagania).
Przypadki testowe:
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
Kolega, o którym mowa, udowodnił, że nie będzie żadnych powiązań: z wyjątkiem 11 września, 99/111 itd., Dla których jedna jest krótsza od drugiej, dwie kolejne prawidłowe odpowiedzi są zawsze nieparzyste, więc żadna liczba całkowita nie może być dokładnie w równej odległości od nich.
Number.MAX_SAFE_INTEGER
, ponieważ8e16 - 1
jest wyrażony jako8e16
. Niestety wygląda na to, że jedynym sposobem byłoby zakodowanie maksymalnego wyniku. Niemniej jednak +1.Galaretka, 16 bajtów
Wypróbuj online!
Jak to działa
źródło
Oracle SQL 11.2, 200 bajtów
Nie grał w golfa
źródło
Pyth - 26 bajtów
Ta odpowiedź nie zawsze zwraca najmniejszą wartość w remisie, ale nie ma tego w specyfikacjach, więc oczekiwanie na wyjaśnienienaprawione na 3 bajty.Pakiet testowy .
źródło
Pyth, 16 bajtów
Wypróbuj online: pakiet demonstracyjny lub testowy
Wyjaśnienie:
źródło
MATL , 25 bajtów
Używa brutalnej siły, więc w przypadku dużej liczby może to chwilę potrwać.
Wypróbuj online!
źródło
Perl, 32
Oparty na pięknym rozwiązaniu JavaScript autorstwa Neila.
Zaczyna się zawodzić o
5e15
źródło
Mathematica, 122 bajty
Funkcja o nazwie x.
źródło
JavaScript (ES6), 59 bajtów
Rozwiązanie rekurencyjne (56 bajtów)
Jest to nieco krótsze, ale nie działa,
n > 1111111110
ponieważ został przekroczony maksymalny rozmiar stosu wywołań, więc jest technicznie nieprawidłowy.Wyjaśnienie
Iteruje przez każdą leniwą liczbę, aż dojdzie do pierwszej, która jest większa niż
n
, a następnie porównujen
z tą i poprzednią liczbą, aby ustalić wynik.źródło
Japt , 18 bajtów
Wypróbuj online!
Na podstawie techniki Neila
Niekonkurencyjne rozwiązanie :
źródło
*9+4 h /9|0
:-)05AB1E , 20 bajtów
Wypróbuj online!
źródło
Mathematica, 56 bajtów
Czysta funkcja z pierwszym argumentem
#
, działa dla danych wejściowych do10^6
.Dla nieujemną liczbę całkowitą
n
, a cyfryd
,10^n-1 = 99...9
(9
powtórzonen
trzykrotnie), SOd(10^n-1)/9 = dd...d
(d
powtórzonen
trzykrotnie). TworzyTable
wartość0 <= n <= 6
a0 <= d <= 9
, a następnie spłaszcza tabelę, znajduje listę elementówNearest
do#
i bierzeMin
.Wierzę, że ta wersja będzie działać na dowolnie duże liczby całkowite:
źródło