Ini adalah tantangan kode golf. Sama seperti judulnya, tulis sebuah program untuk menyamarkan serangkaian karakter ascii ke dalam biner.
Sebagai contoh:
"Hello World!"
harus berubah menjadi
1001000 1100101 1101100 1101100 1101111 100000 1010111 1101111 1110010 1101100 1100100 100001
.
Catatan: Saya sangat tertarik dengan implementasi pyth.
code-golf
string
binary
conversion
ericmarkmartin
sumber
sumber
Jawaban:
CJam, 8 byte
Mudah-peasy:
Coba di sini
sumber
Python 3, 41 byte
Seperti jawaban KSFT , tapi saya pikir saya akan menunjukkan bahwa, selain
raw_input -> input
, Python 3 juga memiliki keuntungan di sini karena percikan untukprint
.sumber
Pyth, 10 byte
Pemetaan dan penjelasan python:
Input adalah string yang perlu dikonversi tanpa tanda kutip.
Coba di sini
sumber
Psum(d).append(Pfilter(lambda T:gte(head(join(Plen(k),Plen())))))
, whee d = '' dan k = ''. Jadi tidak, sama sekali tidak valid.Python 3 - 43 byte
Tidak sesingkat itu, tetapi pendekatan IMO yang menarik. Ini memiliki keuntungan tambahan bahwa jika jumlah bit signifikan bervariasi, EG
Hi!
, padding dengan nol adalah sepele (2 byte lebih, dibandingkan dengan 9 untuk.zfill(8)
):sumber
Python - 52
Saya akan bekerja menerjemahkan ini ke Pyth.Orang lain sudah menjawab Pyth.Jika Anda tidak peduli bahwa itu adalah program lengkap atau tentang format I / O dan menggunakan Python 3, Anda dapat melakukannya dalam 23 byte seperti ini:
x
adalah input.Saya tahu ini tidak masuk hitungan karena penerjemah belum dirilis sebelum tantangan dipasang, tapi ini dia di KSFTgolf:
sumber
Ruby,
342824 byteMengambil input melalui STDIN. 6 byte disimpan, terima kasih untuk AShelly dan 4 lainnya berkat inggris.
sumber
$<.each_byte{|c|$><<"%b "%c}
String#bytes
alih-alihString#each_byte
. Formulir blok sudah usang, tetapi masih berfungsi :)PowerShell,
635946 byte-13 byte berkat @mazzy
Cobalah online!
sumber
Matlab
Ini adalah fungsi anonim
penggunaan adalah
f('Hello World')
.Atau, jika
x
didefinisikan sebagai stringHello World!
di ruang kerja, maka hanyadec2bin(char(x))
akan berfungsi.sumber
char
? Saya pikir maksud Andadec2bin(x)-'0'
char(x)
ketikax
sudah menjadi string, tidak melakukan apa-apa. Jadi Anda bisa menghapusnya untuk menghemat ruang. Di sisi lain, hasilnyadec2bin
adalah string, dan saya pikir outputnya harus berupa angkaJ - 9
Tidak tahu bagaimana membuat ini berturut-turut tanpa menggandakan panjang kode, saya perlu guru J untuk memberi tahu saya :)
sumber
".
ke awal. Ini mengevaluasi hasil Anda sehingga akan berada dalam satu baris dan dipisahkan oleh spasi. Bahkan lebih pendek adalah untuk menciptakan Base10 nomor dengan digit base2:10#.#:3&u:
.Java - 148 Bytes
Diedit untuk memasukkan file lengkap
sumber
for(char c:a[0].toCharArray()){
atau bahkanfor(byte b:a[0].getBytes()){
karena inputnya ascii, dengan asumsi lokal mesin non-utf-16public
dan mempersingkat nama program menjadi satu karakter untuk memenangkan lebih banyak byte. Plus,(String[]a)
diterima dengan sempurna oleh kompiler, menghasilkan Anda byte lain.JavaScript ES6, 63
65byteIni agak panjang, berkat nama fungsi JavaScript yang panjang. Cuplikan Stack di bawah ini adalah setara ES5 kasar, sehingga dapat dijalankan di browser apa pun. Terima kasih kepada edc65 untuk peningkatan golf.
sumber
[for of]
sedikit lebih pendek daripada[...].map
untuk menghitung karakter dalam string:alert([for(c of prompt())c.charCodeAt().toString(2)].join(' '))
.join(' ')
dengan.join` `
. Anda dapat bermain golf banyak byte dengan menggunakan fungsi alih-alihprompt
/alert
Scala -
59- 55 BytesBiasanya, seseorang harus menggunakan foreach dan bukan memetakan.
sumber
8088 kode mesin, IBM PC DOS,
3331 byte *Daftar:
File COM DOS yang dapat dieksekusi PC lengkap, input melalui baris perintah.
Dengan nol di depan:
Unduh dan uji ASCBIN.COM .
Atau 39 byte tanpa nol di depan:
Unduh dan uji ASCBIN2.COM .
* Karena tidak jelas secara eksplisit kepada saya apakah angka nol di depan diperbolehkan atau tidak, saya memposting versi keduanya.
sumber
MITS Altair 8800 , 0 byte
String input ada di alamat memori
#0000H
( diizinkan ). Output dalam biner melalui lampu I / O panel depanD7-D0
.Contoh, lakukan
RESET
, kemudianEXAMINE
untuk melihat byte pertama, diikuti oleh pengulanganEXAMINE NEXT
untuk melihat sisanya."H" = 01 001 000:
"e" = 01 100 101:
"l" = 01 101 100:
Cobalah online!
Tidak bersaing, tentu saja. :)
sumber
Haskell, 65
banyak menggunakan daftar monad. itu tidak dapat dikonversi ke daftar pemahaman karena pernyataan terakhir bukan a
return
.sumber
C ++ - 119 byte
Membebaskan memori? Apa itu?
(MSVC mengkompilasi kode dengan peringatan)
sumber
main(int c,char**v){char x[9];for(;c=*(v[1]++);printf("%s ",itoa(c,x,2)));}
Jelly , 3 byte
Cobalah online!
sumber
Tcl , 52 byte
Cobalah online!
sumber
binary scan [join $argv] B* b;puts [regsub -all .{8} $b {& }]
APL (Dyalog) , 12 byte
Cobalah online!
Terima kasih kepada Adám untuk bantuan dengan solusi ini.
sumber
Python 3.6 , 39 byte
Cobalah online!
sumber
Commodore VIC-20 / C64 / 128 dan TheC64Mini, 101 byte BASIC tokenized
Berikut adalah daftar yang dikaburkan menggunakan singkatan kata kunci Commodore BASIC:
Di sini untuk tujuan penjelasan adalah daftar simbolik yang tidak dikaburkan:
Fungsi yang
fn b
dideklarasikan pada baris nol menerima parameter numerikx
yangAND
ed dengan nilaib
; SGN kemudian digunakan untuk mengkonversix and b
ke1
atau0
.Baris satu menerima input string ke variabel
a$
, dan loop dimulai (dilambangkan dengani
) ke panjang input itu.b
mewakili setiap bit dari bit ke-6 sampai ke-0.c$
mengambil setiap karakter string pada posisii
.baris 5 memulai loop untuk menguji setiap posisi bit;
right$
digunakan pada baris 6 untuk menghapus masalah pemformatan otomatis ketika Commodore BASIC menampilkan angka, mengubah outputfn b
menjadi string;asc(c$)
mengkonversi karakter saat ini ke kode ascii sebagai nilai desimal.Baris 7 mewakili nilai bit berikutnya. Loop
j
berakhir sebelum mencetak spasi, lalu loop terakhiri
berakhir.sumber
JavaScript ES6, 71 byte
sumber
.split('')
memisahkan pada string kosong;.split()
berubah"abc"
menjadi["abc"]
.Keempat (gforth) , 45 byte
Cobalah online!
Penjelasan Kode
sumber
Ruby, 24 byte
Saya berharap bisa mengalahkan Martin Ender , tetapi saya hanya berhasil mengikatnya.
Mengambil input dari STDIN; +1 byte untuk
-p
bendera.Cobalah online!
sumber
Gaia , 4 byte
Cukup senang dengan ini
Bagaimana itu bekerja
Cobalah secara Online!
sumber
Python 3 , 39 byte
Cobalah online!
Perbaikan sedikit atas jawaban Python terkemuka saat ini
sumber
STATA 158
Saya menggunakan pendekatan yang berbeda dari kebanyakan. Baca melalui prompt display _request () (disingkat menjadi di _r (r)). Tulis string ke file yang disebut b dalam mode teks. Buka b dalam mode biner dan baca setiap karakter sebagai byte dan konversikan ke biner. Secara teknis file b harus ditutup pada akhirnya, tetapi ini adalah program yang valid dan berjalan dengan sukses tanpa itu.
sumber
Golang - 68
Saya baru untuk Go dan saya tidak yakin tentang aturan untuk menghitung karakter dalam bahasa ini di sini juga.
Impor (11 byte):
Fungsi (55 byte):
Anda bisa menjalankannya di sini .
sumber
C # tidak akan pernah memenangkan pertanyaan-pertanyaan semacam ini tetapi ini adalah suatu percobaan, sepenuhnya tanpa penyandian. :)
C # - 84
sumber
x=>String.Join(" ",x.Select(y=>Convert.ToString(y,2)));
Namun perhatikan bahwa, karena menggunakan.Select()
, kedua jawaban yang lebih pendek ini, dan jawaban awal Anda, perlu menyertakan 18 byte untukusing System.Linq;
kecuali Anda menentukan bahwa itu menggunakan Visual C # Interactive Compiler , yang mengimpor System.Linq secara defaultCobra - 64
Sebagai Lambda:
sumber