Ubah angka heksadesimal (dari berbagai ukuran) menjadi angka biner.
Masukan
A POSITIF nomor heksadesimal dengan 0x
di awal. Sebuah input yang valid akan selalu cocok dengan regex berikut: 0x[0-9a-fA-F]+
. Jika input bukan angka heksadesimal yang valid, yaitu, apa pun yang tidak cocok dengan regex ini, output seharusnya 0
.
Output
Heksadesimal dikonversi menjadi biner.
Memenangkan
Aturan Kode-Golf Asli, Jumlah gigitan terendah (bytes)
.
Contohnya
IN: 0x12
OUT: 10010
IN: 0xFF
OUT: 11111111
IN: 0XFF
OUT: 0
IN: #0ac4
OUT: 0
IN: 0x00101011
OUT: 100000001000000010001
IN: 0x525600
OUT: 10100100101011000000000
IN: 0x58f70555118ec400
OUT: 101100011110111000001010101010100010001100011101100010000000000
IN: 0x6669795966AF3000
OUT: 110011001101001011110010101100101100110101011110011000000000000
IN: 0b018474
OUT: 0
IN: 9577383
OUT: 0
IN: -483355
OUT: 0
IN: -0xf9ad92
OUT: 0
code-golf
base-conversion
Hashim Kayani
sumber
sumber
#0ac4
masih ada test case yang valid?X
huruf besar).00011010
Jawaban:
Pyth, 15 byte
Penjelasan:
Test Suite
Dengan klarifikasi aturan (yang
0x
harus huruf kecil) di OP, Anda dapat menghapusr0
selama 13 byte.sumber
Python 2,
67626059 byteCobalah online!
Versi yang kesalahan pada input yang tidak valid (27 byte):
Cobalah online!
sumber
05AB1E , 11 byte
Cobalah online!
Penjelasan
sumber
0XFF
.0x
jadi saya akan mengatakan bahwa test-case tertentu salah.Å?
atau 10 byte dengan masih menggunakan warisan .Batch, 402 byte
Mengambil input pada STDIN. 8 baris kemudian sebagian besar terbuang pada validasi input, sehingga baris yang menarik adalah baris 11, yang menggantikan setiap digit heksa dengan ekuivalen binernya, tetapi karena batasan Batch, dengan
.
garis 12 terkemuka , yang menghapus semua huruf.
s, dan garis 14 , yang menghapus 0s awal. Namun ini gagal untuk input seperti0x0
jadi saya "membatalkan" yang artinya 0 adalah output.sumber
PHP,
66 6563 bytedijalankan sebagai pipa dengan
-F
.Tanpa itu
0x
, masalah terburuk adalah keduanyahexdec
danbase_convert
mengabaikan karakter yang bukan hex; tetapi dengan itu, bagaimanapun juga harus ada pemeriksaan validitas eksplisit.45 byte tanpa
0x
:sumber
echo stristr($a=$argn,"0X")==$a?decbin(hexdec(ltrim($a,Xx0))):0;
Apakah ini Alternatif yang baik? Seharusnya berfungsi untuk testcases yang diberikanhexdec
danbase_convert
).echo decbin(hexdec(preg_filter("#^0x([a-f\d]+$)#i","$1",$argn)));
<?=
dariecho
dengan opsi -FJavaScript (ES6),
109108 byteBerfungsi untuk ukuran input apa pun.
Uji kasus
Tampilkan cuplikan kode
sumber
0x1fffffffffffff
- aliasNumber.MAX_SAFE_INTEGER
- dan mengembalikan hasil bulat di luar itu. Untungnya, dua test case besar dibulatkan dengan benar.1
bit pertama dan terakhir dalam hasil. Omong-omong, apakah Anda memerlukan$
regexp pertama?$
. Idenya adalah untuk mendapatkan nol akhir jika tidak ada1
hasilnya sama sekali.REXX, 45 byte
sumber
Retina , 149 byte
(perhatikan garis akhir baris)
Cobalah online!
Berikut ini adalah solusi alternatif dengan biaya 7 byte: Cobalah!
sumber
perl, 25
(kode 24 + 1 flag -n)
sumber
JavaScript (ES6),
116111 byteTidak terbatas pada presisi 53 bit. Sunting: Disimpan 5 byte dengan menulis ulang konversi digit saya, yang juga mengurangi persyaratan bahasa saya menjadi ES6.
sumber
0x00101011
, maaf.8086 kode mesin - 63 byte
Berfungsi untuk input apa saja hingga 125 karakter (panjang baris perintah maksimum di DOS)
sumber
JavaScript (ES6),
535249505245 byte(Non-bersaing karena tidak menangani input apa pun ukuran ; Saya hanya beruntung dengan input sampel)
sumber
CJam , 24 byte
Cobalah online!
Penjelasan
sumber
JavaScript (ES6), 107 karakter
sumber
Perl 6 , 35 byte
sumber
Javascript, 63 byte
sumber