Verwandte: Programmieren Sie meine Mikrowelle . Inspiriert von Faulen Mikrowelleneingang erzeugen .
Der Lazy-Wert der nicht-negativen Ganzzahl N ist die kleinste der Ganzzahlen, die N am nächsten sind, während alle ihre Ziffern identisch sind.
Geben Sie (mit allen Mitteln) den Lazy-Wert eines gegebenen (mit allen Mitteln) N zurück .
N ≤ die größte Ganzzahl, die Ihre Sprache standardmäßig in Nicht-Exponenten-Form darstellt. 1000000 (Durch diese zu hohe Anforderung gehen viele interessante Lösungen verloren.)
Testfälle:
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
Der fragliche Kollege hat bewiesen, dass es keine Bindungen geben wird: Abgesehen von 9/11, 99/111 usw., für die eine kürzer als die andere ist, sind zwei aufeinanderfolgende gültige Antworten immer ungerade voneinander entfernt, sodass keine ganze Zahl genau sein kann gleich weit von ihnen entfernt.
Number.MAX_SAFE_INTEGER
Laufen bringen, weil er8e16 - 1
als ausgedrückt wird8e16
. Leider sieht es so aus, als ob der einzige Weg darin besteht, das maximale Ergebnis hart zu codieren. +1 trotzdem.Gelee, 16 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Oracle SQL 11.2, 200 Byte
Nicht golfen
quelle
Pyth - 26 Bytes
Diese Antwort gibt nicht immer den kleinsten Wert in einem Unentschieden zurück, aber das ist nicht in den Spezifikationen, so dass auf eine Klärungvon 3 Bytes gewartet wird.Test Suite .
quelle
Pyth, 16 Bytes
Probieren Sie es online aus: Demo oder Test Suite
Erläuterung:
quelle
MATL , 25 Bytes
Wendet rohe Gewalt an, daher kann es bei großen Zahlen eine Weile dauern.
Probieren Sie es online!
quelle
Perl, 32
Basierend auf der schönen JavaScript-Lösung von Neil.
Fängt an zu scheitern
5e15
quelle
Mathematica, 122 Bytes
Funktion mit dem Namen x.
quelle
JavaScript (ES6), 59 Byte
Rekursive Lösung (56 Bytes)
Dies ist ein bisschen kürzer, funktioniert aber nicht,
n > 1111111110
da die maximale Call-Stack-Größe überschritten wird und daher technisch ungültig ist.Erläuterung
Durchläuft jede faule Zahl, bis die erste erreicht ist, die größer als ist
n
, und vergleichtn
sie dann mit dieser und der vorherigen Zahl, um das Ergebnis zu bestimmen.quelle
Japt , 18 Bytes
Probieren Sie es online!
Basierend auf Neils Technik
Nicht konkurrierende Lösung :
quelle
*9+4 h /9|0
:-)05AB1E , 20 Bytes
Probieren Sie es online!
quelle
Mathematica, 56 Bytes
Reine Funktion mit erstem Argument
#
, funktioniert für Eingaben bis10^6
.Für eine nicht - negative ganze Zahl ist,
n
und eine Zifferd
,10^n-1 = 99...9
(9
wiederholtn
mal), sod(10^n-1)/9 = dd...d
(d
wiederholtesn
Mal). Erstellt eineTable
von Werten für0 <= n <= 6
und0 <= d <= 9
dann die Tabelle abflacht, findet die Liste der ElementeNearest
zu#
und nimmt dieMin
.Ich glaube, diese Version wird für beliebig große ganze Zahlen funktionieren:
quelle