Diberikan input string dengan byte yang mungkin dalam biner, oktal, atau hex, output setara string ASCII.
Masukan akan diberikan dalam format berikut, misalnya:
501200100001147
yang mewakili
0x50 0o120 0b01000011 0x47
yang setara (dalam ASCII) dengan
PPCG
Biner, oktal, dan hex akan selalu diberikan masing-masing 8, 3, dan 2 digit.
Untuk keperluan tantangan ini, hanya ASCII yang dapat dicetak yang harus didukung. Ini adalah kisaran 32..126
inklusif. Karena itu, tidak mungkin ada ambiguitas. Catat itu
Sebuah string mewakili biner jika dan hanya jika dimulai dengan a
0
dan karakter keduanya adalah a0
atau a1
. Semua karakter ASCII yang dapat dicetak memiliki bit tinggi dalam biner (yaitu mulai dengan a0
), dan tidak ada yang dimulai dengan00
atau01
dalam hex atau oktal.Dengan biner keluar dari jalan, perhatikan bahwa semua karakter ASCII yang dapat dicetak mulai dengan
2
-7
in hex dan0
-1
in octal. Oleh karena itu, dimungkinkan untuk juga membedakan antara hex dan oktal.
Anda dapat mengasumsikan bahwa input hex disediakan sebagai huruf kecil atau besar, mana yang lebih nyaman.
Regex membuat bagian parsing tantangan semi-sepele. Saya tidak ingin langsung melarang penggunaan regex, tetapi jika Anda memiliki solusi non-regex lebih lama daripada rekannya yang menggunakan regex, jangan ragu untuk mengirimkannya bersama dengan jawaban "nyata", karena saya akan tertarik untuk melihatnya juga. :)
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji:
In Out
-----------------------------------
501200100001147 | PPCG
5C01101111100 | \o@
313206306400110101 | 12345
2A200530402C | * + ,
0011111100111111 | ??
<empty string> | <empty string>
sumber
0[01]{7}
bukan0[01].{6}
.ES6,
8680 byteSolusi berbasis regex:
Solusi non-regex rekursif untuk 95 byte:
sumber
Python 3, 165 byte
Tanpa Regex
sumber