Terinspirasi oleh komik XKCD berikut:
Dalam "Work It" Missy Elliot, bagian dari paduan suara berbunyi sebagai berikut:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
Mengingat hal itu, saya mengusulkan tantangan golf kode berikut:
Buat kode yang sesuai, dalam urutan:
- Mengambil input ASCII 8-bit dari STDIN; mis.
n
(Hex 6E, atau Bin 01101110) - Menggeser 8 bit setiap byte dari level 1 bit (saya percaya ini disebut pergeseran bitwise ke bawah), misalnya
01101110
menjadi00110111
("letakkan barang saya"); - Menghindari bit setiap byte, misalnya
00110111
menjadi11001000
("flip it"); - Membalik bit untuk setiap byte, misalnya
11001000
menjadi00010011
("membalikkannya"); - Jika nilai byte kurang dari 32, maka lakukan
(95 + [byte value])
, atau dengan kata lain(126-(31-[byte value]))
, pada byte sebelum mengonversi kembali ke ASCII ... Jika nilai byte masih kurang dari 32, ulangi langkah 5 - Jika nilai byte lebih besar dari 126, maka lakukan
([byte value] - 95)
, atau dengan kata lain(32+([byte value]-127))
, pada byte sebelum mengkonversi kembali ke ASCII ... JIKA nilainya masih lebih besar dari 126, ulangi langkah 6. - Tampilkan string yang baru dikonversi sebagai ASCII.
Contoh kode ini dalam aksi:
(Masukan, apakah itu layak?)
workit missy
("missy" menjadi input, "workit" adalah fungsinya)
Sekarang di belakang layar ...
(biarkan saya bekerja ... Menjadi biner)
01101101 01101001 01110011 01110011 01111001
(Letakkan barang saya ... Bitwise)
00110110 00110100 00111001 00111001 00111100
(... Balikkan ...)
11001001 11001011 11000110 11000110 11000011
(... Dan balikkan!)
10010011 11010011 01100011 01100011 11000011
(Dikonversi kembali ke Desimal)
147 211 99 99 195
(Lakukan matematika yang diperlukan)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(Konversi kembali ke ASCII dan tampilkan, output)
4tccd
Aturan
- Kemenangan kode terpendek ... sesederhana itu ...
- Input dapat melalui fungsi, dengan prompt atau apa pun yang berfungsi untuk Anda, selama Anda dapat membuat Aturan 1 "berfungsi" untuk Anda ...;)
- Saya tidak mengejar reversibilitas, selama Anda dapat membuat kode melakukan apa yang saya minta, saya akan senang ...
Semoga berhasil!
0 1 1 0 1 1 0 1
dan 0 1 1 0 1 0 0 1
untukmi
P
berubah menjadi nilai byte 235
dan mengurangkan 95
daun Anda dengan 140
. Masih tidak patut dicetak. Atau apakah saya salah paham?