Anda akan diberi nomor x
, di mana 0 <= x <= 2^32 - 1
.
Anda harus menampilkan daftar angka dalam desimal, setelah pemisahan rekursif dalam format biner.
Contoh:
Contoh 1:
255 -> 255 15 15 3 3 3 3 1 1 1 1 1 1 1 1
Daftar saat ini adil 255
.
Representasi biner dari 255
is 1111 1111
. Memisahkannya, kita dapatkan 1111
dan 1111
, yang dalam desimal adalah 15
dan 15
.
Kami menambahkannya ke daftar, jadi kami akan memilikinya 255 15 15
.
Sekarang angka 15
dan 15
akan berfungsi sebagai input dan angka-angka ini harus dibagi.
Melakukannya lagi, kita mendapatkan ( 3 3
dari kedua 15
s): 255 15 15 3 3 3 3
.
Melanjutkan logika, daftar akhir akan 255 15 15 3 3 3 3 1 1 1 1 1 1 1 1
. Dan karena 1
tidak lagi dapat dibagi, output berhenti.
Contoh 2:
225 -> 225 14 1 3 2 1 1 1 0
Daftar awal adalah 225
.
Representasi biner dari 225
is 1110 0001
. Memisahkannya, kita dapatkan 1110
dan 0001
, yang dalam desimal adalah 14
dan 1
.
Menambahkan itu ke daftar, kita dapatkan 225 14 1
.
Sekarang angka 14
dan 1
akan berfungsi sebagai input dan angka-angka ini harus dibagi.
Karena 1
tidak ada splittable, hasilnya akan menjadi 225 14 1 3 2
.
Contoh 3:
32 -> 32 4 0 1 0
Ketentuan :
- Jika jumlah digit biner ganjil, angka pertama akan memiliki satu digit biner lebih sedikit dari yang berikutnya. Contoh,
20 (10100)
akan dibagi menjadi10
dan100
, dengan output desimal menjadi2
dan4
. - Aturan celah standar berlaku.
0
dan1
tidak menyebar lebih jauh.- Program macet karena mencoba menampilkan terlalu banyak angka adalah kondisi keluar yang valid.
sumber
0
ketika panjangnya aneh?0
s.Jawaban:
Pyth, 18 byte
Suite uji
Kode ini melakukan sesuatu yang sangat rumit dan pintar
u
, operator titik tetap Pyth.Tubuh fungsi, yang merupakan segalanya selain
u
, cukup mudah:Kode ini menghilangkan 0s dan 1s, membagi setiap angka, dan menambahkan input di depan.
u
akan menjalankan fungsi ini pada hasil sebelumnya dari fungsi sampai hasilnya berhenti berubah.Nilai awal apa yang
u
digunakan? Itu bagian yang pintar: kode tidak menentukan nilai apa yang digunakan, jadi default untuk input. Tetapi input bukan daftar angka - ini nomor. Pyth secara implisit memaksa angka pada waktu pertama melalui loop ke kisaran angka -[0, 1, ..., Q-1]
. Itu tidak terlihat seperti output yang ingin kita dapatkan. Untungnya,u
akan menemukan hasil yang benar terlepas dari apa input awal - output yang diinginkan adalah satu-satunya titik tetap dari fungsi, dan aplikasi berulang akan selalu mencapainya.Mari kita lihat nilai tengah dari program dengan input
7
. Saya telah menyoroti awalan hasil yang dijamin benar, terlepas dari input awal:7
(Secara implisit[0, 1, 2, 3, 4, 5, 6]
)[7,
1, 0, 1, 1, 1, 0, 1, 1, 1, 2]
[7, 1, 3,
1, 0]
[7, 1, 3, 1, 1]
Yang merupakan output.
Dikemas Pyth, 16 byte
Perhatikan bahwa karena Pyth hanya menggunakan rentang 0-127 ASCII, ia dapat dikompresi dengan menggunakan pengkodean 7-bit daripada pengodean 8 bit. Dengan demikian, program di atas dapat dikemas menjadi 16 byte. Program yang dihasilkan adalah:
hexdump:
Penerjemah ditemukan di sini . Berikan input sebagai argumen baris perintah.
Halaman kode bahasa ini (Packed Pyth) adalah rentang 0-127 ASCII, dan setiap karakter diwakili dengan 7 bit, diisi pada bagian akhir. Dengan demikian, hexdump yang tidak dapat dibaca di atas mewakili:
Namun dalam 16 byte.
sumber
05AB1E ,
21201817 byteCobalah online!
Penjelasan
sumber
ʒ
- Codepage baru ini ... Sejak kapan 05AB1E Jelly? Saya sukaJavaScript (ES6), 99 byte
Ini terlihat agak terlalu lama. Mungkin ada cara yang lebih baik untuk mendapatkan urutan yang benar.
Demo
Tampilkan cuplikan kode
sumber
Jelly ,
2120 byte-1 byte dengan menghapus rantai monadik dan kemudian berurusan dengan konsekuensi dari daftar kosong yang dikonversi dari biner menghasilkan 0 nanti.
Tautan monadik yang mengambil nomor dan mengembalikan daftar yang ditentukan.
Cobalah online!
Bagaimana?
sumber
Java 7, 541 byte
Menjaga pesanan asli mengacaukan waktu saya, jika tidak, itu hanya akan menjadi loop mudah dan prinsip panggilan rekursif. Tetap saja, tantangan yang menyenangkan untuk mencari tahu sambil mempertahankan pesanan.
Penjelasan:
Kode uji:
Coba di sini.
Keluaran:
sumber
Python 2 , 110 byte
Cobalah online!
sumber
Retina , 142 byte
Cobalah online!
sumber
PHP, 132 Bytes
Cobalah online!
sumber
Array( [0] => 225 [1] => 14 [2] => 1 [3] => 3 [4] => 2 [5] => 1 [6] => 1 [7] => 1 [8] => 0 )
ketika tidak = 255 15 15 3 3 3 3 1 1 1 1 1 1 1 1$argn
Variabel ini tersedia jika Anda menjalankan PHP dari baris perintah dengan-R
opsi. Berikut adalah contoh untuk input 255 Cobalah online!Ruby , 102 byte
Cobalah online!
sumber
Ruby , 98 byte
Cobalah online!
Cukup optimalisasi dasar jawaban Value Ink : gunakan flat_map alih-alih peta ... ratakan, dan gunakan
a==[]?a
dari padaa==[]?[]
sumber