Tugas Anda adalah mengambil angka positif sebagai input, n , dan menampilkan panjang representasi rep-digit terpanjang dari n pada basis apa pun. Misalnya 7 dapat direpresentasikan sebagai salah satu dari yang berikut ini
111_2
21_3
13_4
12_5
11_6
10_7
7_8
Digit rep adalah 111_2
dan 11_6
, 111_2
lebih panjang sehingga jawaban kami adalah 3.
Ini adalah pertanyaan kode-golf sehingga jawaban akan dinilai dalam byte, dengan lebih sedikit byte yang lebih baik.
Uji Kasus
1 -> 1
2 -> 1
3 -> 2
4 -> 2
5 -> 2
6 -> 2
7 -> 3
8 -> 2
9 -> 2
10 -> 2
11 -> 2
26 -> 3
63 -> 6
1023-> 10
Implementasi sampel
Berikut ini adalah implementasi di Haskell yang dapat digunakan untuk menghasilkan lebih banyak kasus uji.
f 0 y=[]
f x y=f(div x y)y++[mod x y]
s x=all(==x!!0)x
g x=maximum$map(length.f x)$filter(s.f x)[2..x+1]
code-golf
base-conversion
Posting Rock Garf Hunter
sumber
sumber
base > 1
?222
di basis 3.Jawaban:
Jelly , 9 byte
Tautan monadik yang menerima dan mengembalikan nomor
Cobalah online! atau lihat test suite (memasukkan satu hingga 32 inklusif).
Bagaimana?
... atau mungkin saya seharusnya melakukan:
Untuk
Lo1
z.sumber
ZL
lebih pendek dariL€Ṁ
...JavaScript (ES6), 62 byte
sumber
Haskell ,
868179 byte2 byte disimpan berkat Laikoni
Cobalah online!
Karena ini sedikit mereda, inilah pendekatan saya. Ini adalah versi kode kode yang dibuat untuk pertanyaan. Saya pikir pasti bisa lebih pendek. Saya hanya berpikir saya akan meletakkannya di sana.
sumber
length.head.filter(all=<<(==).head).(<$>[2..]).(!)
.Sekam ,
1311 byte-2 byte terima kasih kepada zgarb
Cobalah online!
sumber
mm
bisaM
, danṠoΛ=←
bisaȯ¬tu
. Belum ada built-in untuk memeriksa bahwa semua elemen daftar adalah sama ...ΓoΛ=
juga berfungsi sebagai empat byteM
harus ada dalam dokumen, karena kami sudah memilikinya untuk sementara waktu. Saya harus memperbaikinya. Tapi itu pada dasarnya adalah dualṀ
.Mathematica, 71 byte
Cobalah online!
sumber
05AB1E , 8 byte
Cobalah online!
-1 berkat kalsowerus .
sumber
L>вʒË}нg
untuk 8 byteBrachylog , 12 byte
Cobalah online!
sumber
Python 3 ,
9287 byte5 byte berkat Halvard Hummel.
Cobalah online!
sumber
Mathematica, 58 byte
Melempar kesalahan (karena basis-1 bukan basis yang valid), tetapi aman untuk diabaikan.
Tentu saja, tidak apa-apa untuk mengambil panjang dari repdigit pertama (
FirstCase
), karena angka dalam basis yang lebih rendah tidak bisa lebih pendek dari pada basis yang lebih tinggi.sumber
CJam (17 byte)
Test suite online . Ini adalah blok anonim (fungsi) yang mengambil integer di stack dan meninggalkan integer di stack.
Bekerja dengan brute force, digunakan
3
sebagai basis cadangan untuk menangani kasus khusus (input1
atau2
).sumber
Perl 6 , 49 byte
Cobalah online!
Penjelasan
Itu polymod metode adalah generalisasi dari Python
divmod
: Ia melakukan pembagian integer diulang menggunakan daftar yang diberikan pembagi, dan mengembalikan sisanya menengah.Ini dapat digunakan untuk menguraikan kuantitas menjadi beberapa unit:
Ketika melewati urutan malas sebagai daftar pembagi,
polymod
berhenti ketika hasil bagi mencapai nol. Dengan demikian, memberikan pengulangan tak terbatas dari nomor yang sama, menguraikan input menjadi digit dari basis itu:Saya menggunakan ini di sini karena memungkinkan basis tinggi sewenang-wenang, berbeda dengan
.base
metode berbasis string yang hanya mendukung hingga basis 36.sumber
[]
sekitarpolymod
dengan mengubah$_
ke@_
TI-BASIC, 37 byte
Prompt untuk N, mengembalikan output dalam Ans.
Penjelasan
Sebagai gambaran umum, untuk setiap basis B yang mungkin secara berurutan, pertama-tama ia menghitung jumlah digit N ketika direpresentasikan dalam basis B, kemudian memeriksa apakah N dapat dibagi dengan nilai yang diwakili oleh angka 1-digit yang sama dalam basis B.
sumber
Pyth , 13 byte
Cobalah online!
sumber
Java 8, 111 byte
Byte-count 111 juga merupakan digit ulang. ;)
Penjelasan:
Coba di sini.
sumber
Java 8, 79 byte
Seekor lambda dari
Integer
keInteger
.Lambda yang tidak tersentuh
Memeriksa radio dalam urutan yang meningkat dari 2 hingga radix rep-digit ditemukan. Bergantung pada kenyataan bahwa radix terkecil tersebut akan sesuai dengan representasi dengan digit terbanyak.
m
adalah salinan input,b
adalah radix, danl
jumlah digit yang diperiksa (dan akhirnya panjangb
representasi radix ).sumber
Burlesque, 24 byte
(lihat solusi yang tepat di bawah)
Lihat beraksi .
Setidaknya jika intuisi saya benar bahwa representasi rep-digit akan selalu terpanjang? Kalau tidak uhm ...
sumber