pengantar
Kode Abu - abu adalah alternatif untuk representasi biner di mana angka bertambah dengan mengubah hanya satu bit, daripada jumlah variabel bit. Berikut adalah beberapa kode abu-abu beserta desimal dan binernya:
decimal | binary | gray
-------------------------
0 | 0 | 0
-------------------------
1 | 1 | 1
-------------------------
2 | 10 | 11
-------------------------
3 | 11 | 10
-------------------------
4 | 100 | 110
-------------------------
5 | 101 | 111
-------------------------
6 | 110 | 101
-------------------------
7 | 111 | 100
-------------------------
8 | 1000 | 1100
-------------------------
9 | 1001 | 1101
-------------------------
10 | 1010 | 1111
-------------------------
11 | 1011 | 1110
-------------------------
12 | 1100 | 1010
-------------------------
13 | 1101 | 1011
-------------------------
14 | 1110 | 1001
-------------------------
15 | 1111 | 1000
Pola Bit Siklik dari Kode Abu-abu
Kadang-kadang disebut "binary tercermin", sifat mengubah hanya satu bit pada satu waktu mudah dicapai dengan pola bit siklik untuk setiap kolom mulai dari bit paling signifikan:
bit 0: 0110011001100110011001100110011001100110011001100110011001100110
bit 1: 0011110000111100001111000011110000111100001111000011110000111100
bit 2: 0000111111110000000011111111000000001111111100000000111111110000
bit 3: 0000000011111111111111110000000000000000111111111111111100000000
bit 4: 0000000000000000111111111111111111111111111111110000000000000000
bit 5: 0000000000000000000000000000000011111111111111111111111111111111
...dan seterusnya.
Objektif
Diberikan string input non-empuk dari kode abu-abu, menambah kode abu-abu dengan bergantian karakter tunggal dalam urutan atau mengawali a 1
(saat menambah ke kekuatan berikutnya 2), kemudian output hasilnya sebagai kode abu-abu non-empuk.
Peringatan
- Jangan khawatir tentang mengambil
0
atau string kosong sebagai input. - Input terendah adalah
1
, dan tidak ada batas atas untuk panjang string selain dari batasan memori yang dikenakan oleh lingkungan. - Dengan string non-padded, maksud saya tidak akan ada spasi spasi awal atau tambahan (selain baris tambahan opsional), dan tidak ada pemimpin
0
dalam input atau output.
Format I / O
Format berikut adalah formulir yang diterima untuk input dan output, tetapi string dianjurkan daripada format lain:
- "bit" paling penting terlebih dahulu
- array karakter atau string ASCII
'1'
s dan'0'
s - array integer non-empuk dari
1
s dan0
s - array boolean non-empuk
Apa yang tidak diizinkan:
- "bit" paling penting terlebih dahulu
- bilangan desimal, biner atau bilangan bulat unary
- struktur data tetap-panjang
- array karakter atau string indeks ASCII yang tidak dapat dicetak
1
dan0
Tes
input -> output
1 -> 11
11 -> 10
111 -> 101
1011 -> 1001
1111 -> 1110
10111 -> 10110
101100 -> 100100
100000 -> 1100000
Lebih banyak tes dapat ditambahkan berdasarkan permintaan.
Kriteria
Ini adalah kode-golf , sehingga program terpendek dalam byte menang! Semua ikatan akan diputuskan dengan menyetujui pengiriman sebelumnya; celah standar berlaku. Jawaban yang diajukan terbaik akan diterima pada 9 Oktober 2016, dan diperbarui setiap kali jawaban yang lebih baik diberikan.
0011
untuk 8