Terkait: Programkan oven microwave saya . Terinspirasi oleh Hasilkan input microwave malas .
Nilai lazy dari bilangan bulat non-negatif N adalah yang terkecil dari bilangan bulat yang paling dekat dengan N sementara semua digit mereka identik.
Kembali (dengan cara apapun) nilai malas yang diberikan (dengan cara apapun) N .
N ≤ bilangan bulat terbesar yang diwakili bahasa Anda dalam bentuk non-eksponen secara default. 1000000 (Banyak solusi menarik hilang karena persyaratan yang terlalu tinggi ini.)
Kasus uji:
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 yang bersangkutan membuktikan bahwa tidak akan ada ikatan: Kecuali untuk 9/11, 99/111, dll. Yang satu lebih pendek dari yang lain, dua jawaban yang valid berturut-turut selalu jarak yang aneh, sehingga tidak ada bilangan bulat yang bisa tepat berjarak sama dari mereka.
Number.MAX_SAFE_INTEGER
karena keduanya8e16 - 1
dinyatakan sebagai8e16
. Sayangnya, sepertinya satu-satunya cara adalah mengkodekan hasil maksimal. +1 tetap saja.Jelly, 16 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Oracle SQL 11.2, 200 byte
Tidak bermain golf
sumber
Pyth - 26 byte
Jawaban ini tidak selalu mengembalikan nilai terkecil dalam dasi, tetapi itu tidak ada dalam spesifikasi, jadi tunggu klarifikasitetap selama 3 byte.Test Suite .
sumber
Pyth, 16 byte
Cobalah online: Demonstrasi atau Test Suite
Penjelasan:
sumber
MATL , 25 byte
Menggunakan kekuatan kasar, jadi mungkin perlu beberapa saat untuk jumlah besar.
Cobalah online!
sumber
Perl, 32
Berdasarkan solusi JavaScript yang indah dari Neil.
Mulai gagal pada
5e15
sumber
Mathematica, 122 byte
Fungsi bernama x.
sumber
JavaScript (ES6), 59 byte
Solusi Rekursif (56 byte)
Ini sedikit lebih pendek tetapi tidak berfungsi
n > 1111111110
karena ukuran tumpukan panggilan maksimum terlampaui, sehingga secara teknis tidak valid.Penjelasan
Iterasi melalui setiap nomor malas hingga mencapai yang pertama yang lebih besar dari
n
, kemudian bandingkann
dengan angka ini dan sebelumnya untuk menentukan hasilnya.sumber
Japt , 18 byte
Cobalah online!
Berdasarkan teknik Neil
Solusi non-bersaing :
sumber
*9+4 h /9|0
:-)05AB1E , 20 byte
Cobalah online!
sumber
Mathematica, 56 byte
Fungsi murni dengan argumen pertama
#
, berfungsi untuk input hingga10^6
.Untuk bilangan bulat negatif
n
dan digitd
,10^n-1 = 99...9
( waktu9
berulangn
), jadid(10^n-1)/9 = dd...d
( waktud
berulangn
). MembuatTable
nilai untuk0 <= n <= 6
dan0 <= d <= 9
, lalu meratakan tabel, menemukan daftar elemenNearest
ke#
dan mengambilMin
.Saya percaya versi ini akan bekerja untuk bilangan bulat besar yang sewenang-wenang:
sumber