Terkait: Programkan oven microwave saya dan Hasilkan nilai malas .
Kolega saya sangat malas sehingga dia bahkan tidak repot-repot menggerakkan jarinya ketika memprogram microwave oven. (Ini sebenarnya benar!)
Bantu dia menemukan input gelombang mikro yang memberikan waktu paling dekat dengan yang diinginkannya, tetapi semua digitnya sama. Jika dua input menghasilkan perbedaan waktu yang sama dari waktu yang diinginkan, pilih satu dengan digit yang lebih sedikit. Jika keduanya memiliki jumlah digit yang sama, pilih yang lebih rendah - jadi dia tidak perlu menunggu terlalu lama.
Input adalah bilangan bulat yang akan dimasukkan oleh perfeksionis, misalnya 430
4 menit dan 30 detik 100
dan 60
masing - masing adalah 1 menit. Ini akan lebih besar dari 0 dan tidak akan melebihi 9999.
Keluaran harus berupa bilangan bulat, misalnya 444
4 menit dan 44 detik dan 55
55 detik.
Baik input dan output hanya mungkin dalam detik sederhana (tidak ada menit) jika total waktu di bawah 1 menit dan 40 detik.
Ini kode-golf , jadi kode Anda harus sesingkat mungkin.
Kasus uji:
30 → 33
60 → 55
70 → 111
90 → 88
100 → 55
101 → 66
120 → 77
130 → 88
200 → 99
201 → 222
500 → 444
700 → 666
1000 → 888
1055 → 999
1056 → 1111
1090 → 1111
Jawaban:
Jelly, 26 byte
Penjelasan:
Cobalah online!
sumber
JavaScript (ES6), 112 byte
Menggunakan fungsi pembantu
c
yang menghitung lima kali jumlah aktual detik berlalu.sumber
Dyalog APL , 37 byte
⍳4
1 2 3 4⎕D
"0123456789"∘./⍨
tabel pengulangan (seperti tabel perkalian, tetapi di mana setiap sel berisi B pengulangan A bukan A × B),
membuat tabel menjadi daftar string⍎¨
membuat setiap string menjadi angka (Sekarang kita memiliki daftar dari semua kemungkinan hasil.){
...}
berfungsi di mana argumen diwakili oleh⍵
⎕⍵
argumen mendahului dengan masukan yang diminta(
...)¨
berlaku untuk masing-masing dari keduanya (argumen dan daftar) ...0 100∘⊤
konversikan ke basis-10060⊥
konversi dari basis-60-/
menghitung perbedaan antara dua|
absolut⊃
daftar nilai ekstrak (karena-/
merangkum hasilnya)⍋
sort order (Tidak mengurutkan, hanya mengembalikan urutan penempatan argumen untuk mencapai urutan naik. Jika dua elemen sama, mereka tetap dalam urutan saat ini. Karena daftar kami memiliki elemen yang bertambah panjang, ini menangani ikatan.)⊃
yang pertama, yaitu yang dengan perbedaan absolut terkecil dari input⍵⊃⍨
mengambil elemen itu dari daftar argumen (daftar hasil yang mungkin)Terima kasih kepada kolega yang bersangkutan untuk memangkas satu byte.
Catatan: Saya tidak punya solusi pada saat memposting OP.
sumber