Pertimbangkan proses:
Mengambil bilangan bulat non-negatif N.
eg27.Membagi menjadi bilangan bulat
N - floor(N/2)danfloor(N/2)(bagian 'lebih besar' dan 'lebih kecil') dan menuliskannya dalam urutan itu.
misalnya27menjadi14 13.Menghapus ruang untuk bergabung dengan bilangan bulat menjadi bilangan bulat baru yang jauh lebih besar.
misalnya14 13menjadi1413.Ulangi langkah 2 dan 3 beberapa kali beberapa kali.
misalnya1413→707 706→707706→353853 353853→353853353853→ ...
Tantangan ini adalah tentang melakukan hal ini, tetapi tidak selalu di base 10.
Tantangan
Tulis program yang terdiri dari tiga angka, B, N, dan S:
B adalah bilangan bulat dari 2 hingga 10 yang merupakan basis N (biner ke desimal).
N adalah bilangan bulat non-negatif untuk menerapkan proses splitting-rejoining. Untuk membuat input pengguna lebih mudah, itu diberikan sebagai string di basis B, bukan bilangan bulat.
S adalah bilangan bulat non-negatif yang merupakan jumlah kali untuk mengulangi proses pemisahan-bergabung kembali.
Output dari program ini adalah representasi string dari N di basis B setelah prosedur split-join S.
Ketika S adalah 0, tidak ada pemisahan yang dilakukan, sehingga output selalu N.
Ketika N adalah 0, semua pembagian memiliki bentuk 0 0dan menguranginya 0lagi, sehingga hasilnya selalu 0.
Contohnya
B = 10, N = 27, S = 1→1413B = 10, N = 27, S = 2→707706B = 9, N = 27, S = 1→1413B = 9, N = 27, S = 2→652651B = anything, N = anything, S = 0→NB = anything, N = 0, S = anything→0
Tabel untuk semua B dengan N = 1untuk S = 0ke 7:
B S=0 S=1 S=2 S=3 S=4 S=5 S=6 S=7
2 1 10 11 101 1110 111111 10000011111 10000100001000001111
3 1 10 21 1110 202201 101101101100 1201201201212012012011 212100212102121002121212100212102121002120
4 1 10 22 1111 223222 111311111311 2232222232322322222322 11131111131311311111311113111113131131111131
5 1 10 32 1413 432431 213441213440 104220331443104220331442 2433241322130211014044424332413221302110140443
6 1 10 33 1514 535535 245550245545 122553122553122553122552 4125434125434125434125441254341254341254341254
7 1 10 43 2221 11111110 40404044040403 2020202202020220202022020201 10101011010101101010110101011010101101010110101011010100
8 1 10 44 2222 11111111 44444454444444 2222222622222222222226222222 11111113111111111111131111111111111311111111111113111111
9 1 10 54 2726 13581357 62851746285173 3142536758708231425367587081 15212633743485606571782880411521263374348560657178288040
10 1 10 55 2827 14141413 70707077070706 3535353853535335353538535353 17676769267676676767692676771767676926767667676769267676
Tabel untuk semua B dengan N acak untuk S = 0ke 3:
B S=0 S=1 S=2 S=3
2 11011 11101101 11101111110110 11101111110111110111111011
3 2210 11021101 20102012010200 1001212100121210012121001211
4 1113 230223 112112112111 2302302302323023023022
5 101 2323 11341134 31430423143042
6 120 4040 20202020 1010101010101010
7 134 5252 24612461 1230456412304564
8 22 1111 445444 222622222622
9 4 22 1111 505505
10 92 4646 23232323 1161616211616161
Detail
- Ambil input melalui stdin atau baris perintah. Output ke stdout.
- Alih-alih sebuah program, Anda dapat menulis fungsi yang mengambil B, N, dan S dan mencetak hasilnya secara normal atau mengembalikannya (sebagai string).
- B, N, dan S dapat diambil dalam urutan apa pun.
- Semua input yang menghasilkan output dengan nilai desimal di bawah 2 32 harus berfungsi.
- N diwakili dengan cara biasa. yaitu digit paling signifikan pertama dan tidak ada nol terkemuka kecuali dalam nol itu sendiri yang ditulis
0. (Outputing00bukannya0tidak valid.) - Kode terpendek dalam byte menang.
Jika Anda menikmati tantangan saya, pertimbangkan untuk memberikan Block Building Bot Flocks! Beberapa cinta :)