Kami memiliki deretan bilangan bulat non-negatif yang meningkat pesat, seperti:
12 11 10
Tunggu! Urutan ini tidak benar-benar meningkat, bukan? Nah, angkanya ditulis dalam basis yang berbeda. Basis yang paling tidak mungkin adalah 2, yang terbesar adalah 10.
Tugasnya adalah menebak basis masing-masing angka yang ditulis, sehingga:
- urutannya semakin meningkat,
- jumlah pangkalan dimaksimalkan.
Misalnya, solusi untuk sampel adalah:
6 8 10
karena di bawah pangkalan itu urutan menjadi 8 9 10
desimal - urutan yang benar-benar meningkat, dan kami tidak mampu menemukan basis yang urutannya terus meningkat ketat dan yang jumlahnya lebih besar dari 6+8+10
.
Karena keterbatasan kedua solusi 3 5 7
tidak memuaskan: meskipun urutannya 5 6 7
berada di bawah basis tersebut - kita perlu memaksimalkan jumlah basis, dan 3+5+7 < 6+8+10
.
Jika tidak ada pangkalan 2<=b<=10
adalah mungkin untuk seri meningkat secara ketat, misalnya:
102 10000 10
tunggal
0
harus menjadi output.
Urutan input dapat dilewati dengan cara yang paling nyaman untuk solusi Anda (input standar / parameter baris perintah / argumen fungsi ...).
sumber
1 3 5
urutan meningkat? Bagaimana dengan1 7 22
? (di base 10)1 3 5
dan1 7 22
keduanya naik di bawah basis 10. Jadi, solusi untuk kedua kasus adalah10 10 10
, karena kita perlu memaksimalkan jumlah pangkalan sambil memastikan bahwa urutannya meningkat ketika angka ke-n ditafsirkan sebagai ditulis dalam basis sama dengan n istilah-solusi.1 1 1
atau3 3 4
tidak naik.Jawaban:
Pyth,
313029 byte1 byte berkat @Jakube.
Demonstrasi. Uji Harness.
Masukan diberikan pada STDIN, ruang dipisahkan. Jika input yang dipisahkan baris baru diizinkan, saya dapat mempersingkat program dengan 2 byte.
Penjelasan:
Termasuk
1
dalam daftar pangkalan yang mungkin aman karenai
, yang menggunakanint
built - in Python , tidak memungkinkan1
sebagai pangkalan, dan karena itu selalu melempar kesalahan, yang ditangkap dan disaring.sumber
CJam, 43 byte
Membaca argumen baris perintah dan mencetak array.
Cobalah online di juru bahasa CJam .
Contohnya
Bagaimana itu bekerja
sumber
Julia,
1761561451181099997 byteTidak Disatukan:
Digunakan dengan input array 1d. Jika fungsi ditugaskan
c
, maka Anda akan memanggilc([12,11,10])
dan itu akan keluar[6,8,10]
.Catatan: Saya telah menggunakan
dec(i)
perintah parseint di dalam, tetapi karenai
ini adalah nama variabel karakter tunggal, dan saya tidak perlu mengakses komponen, saya biasa"$i"
mendapatkan hasil yang sama.sumber
c
, makac([12,11,10])
output[6,8,10]
, yang merupakan pangkalan yang diperlukan.[12 11 10]
bukan[12,11,10]
dan itu memberikan efek yang tidak diinginkan.Julia,
259204183 byteMenyimpan banyak dengan bantuan dari Glen O.
Penjelasan + tidak dikumpulkan:
sumber
for i=M(A[1]):10,j=M(A[2]):10,k=M(A[3]):10 <code here>end;
, simpan delapan untuk dua jatuhend;
dan delapan untuk mengganti `untuk` dengan,
.s=map(parseint,x,[i,j,k])
, hemat 18 byte relatif terhadap solusi asli Anda dan 10 dibandingkan dengan peningkatan yang disarankan sebelumnya. Dan alih-alihs==sort(unique(s))
, gunakanall(diff(s).>0)
untuk menyimpan 3 byte lagi.CJam (39 byte)
Ini adalah fungsi anonim yang mengambil input sebagai array bilangan bulat desimal pada stack dan meninggalkan output sebagai array atau integer
0
pada stack. Demo online .sumber
19
tidak bisa menjadi nomor basis 9).Python 2 (147 byte)
Panggil fungsi
x
dengan daftar int.Contoh:
cetakan
sumber