Diberi nomor biner A sebagai input dengan d> 1 digit, hasilkan angka biner B dengan digit d menurut aturan berikut untuk menemukan digit ke-B:
Digit pertama dari B adalah nol jika digit pertama dan kedua dari A sama; jika tidak, itu adalah satu.
Jika 1 <n <d, maka jika digit (n-1) th, nth dan (n + 1) th adalah sama, maka digit n dari B adalah nol; jika tidak, itu adalah satu.
Digit dth dari B adalah nol jika (d-1) digit ke-d dan ke-A sama; jika tidak, itu adalah satu.
Aturan
Input / format input string / daftar baik-baik saja. Cara input / output yang diizinkan lainnya adalah bilangan bulat diikuti oleh jumlah nol sebelumnya (atau mengikuti jumlah nol sebelumnya).
Buat kode Anda sesingkat mungkin.
Uji Kasus
00 -> 00
01 -> 11
11 -> 00
010111100111 -> 111100111100
1000 -> 1100
11111111 -> 00000000
01010101 -> 11111111
1100 -> 0110
1100 -> 0110
(2 digit pertama dari output selalu identik dalam semua test case lainnya; ditto untuk 2 digit terakhir)Jawaban:
Haskell,
595854 byteCobalah online!
Sunting: @ Ørjan Johansen menyimpan 4 byte. Terima kasih!
sumber
"0110"!!(a+b+c)
simpan satu byte.[last s]
dapat dipindahkan ke nilaiscanr
awal.Jelly , 9 byte
Cobalah online!
I / O sebagai daftar digit.
Penjelasan:
sumber
.ị
- Mendapat elemen pada indeks 0,5 . Sejak lantai (0,5) ≠ ceil (0,5) ,ị
mengembalikan elemen pada indeks 0 dan 1 . Jelly adalah salah satu yang diindeks, sehingga 0 benar-benar meraih elemen terakhir.Ṛ
membalikkan pasangan (karena mereka dikembalikan sebagailast, first
). Kemudianj
bergabung dengan pasangan pada input danṡ3
membaginya menjadi irisan panjang yang tumpang tindih 3.E€
memeriksa (untuk setiap daftar) jika semua elemen sama, dan¬
secara logis meniadakan masing-masing.05AB1E , 6 byte
I / O dalam bentuk bit array.
Cobalah online!
Bagaimana itu bekerja
sumber
05AB1E , 11 byte
Cobalah online! atau sebagai Test suite
Penjelasan
sumber
Haskell ,
666159 byteCobalah online! Input adalah daftar nol dan satu, output adalah string. Contoh penggunaan:
g [0,1,0,1,1,1,1,0,0,1,1,1]
hasil"111100111100"
.Solusi 61 byte sebelumnya:
Cobalah online!
sumber
J ,
2614 byteKredit untuk solusi 05AB1E Emigna
Cobalah online!
Upaya asli
Cobalah online!
sumber
Python 3 , 58 byte
Cobalah online!
sumber
Sekam ,
1511 byteMengambil input sebagai daftar, coba online! Atau coba yang ini yang menggunakan string untuk I / O.
Penjelasan
sumber
Jelly , 8 byte
I / O dalam bentuk bit array.
Cobalah online!
Bagaimana itu bekerja
sumber
I0,0jI¬¬
JavaScript (ES6), 45 byte
Mengambil input sebagai array karakter. Mengembalikan array bilangan bulat.
Uji kasus
Tampilkan cuplikan kode
Berkomentar
sumber
Mathematica, 56 byte
Cobalah online!
sumber
Jelly , 16 byte
Cobalah online!
Saya akan bermain golf ini tetapi Erik sudah memiliki solusi yang lebih pendek dan golf milik saya hanya akan membawa milik saya lebih dekat dengannya. Saya masih bermain golf tetapi saya tidak akan memperbarui kecuali saya bisa mengalahkannya atau menemukan ide yang unik.
Penjelasan
sumber
Perl 5 , 62 + 1 (
-n
) = 63 byteCobalah online!
sumber
s;..$;
membangun di akhir adalah bagus. Saya harus ingat yang itu.Sekam , 10 byte
Cobalah online!
Terima kasih kepada Zgarb untuk -1 byte.
sumber
Ẋo±≠
menghemat satu byte.Japt ,
141312 byteSebagian diangkut dari larutan Dennis 'Jelly. Input & output adalah array angka.
Disimpan satu byte berkat produk ETH.
Cobalah
Penjelasan
Input array secara implisit
U
.ä-
mendapatkan delta dari array.pT
mendorong 0 ke akhir array.äaT
pertama menambahkan 0 ke awal array sebelum mendapatkan delta absolut.mg
memetakan elemen-elemen array mengembalikan tanda setiap elemen sebagai -1 untuk angka negatif, 0 untuk 0 atau 1 untuk angka positif.sumber
.ø
pada jawaban 05AB1E. Saya pikir itu akan membuatnya 1 byte lebih pendek ...A.ä()
dengan argumen kedua, Anda bisa menambahkan argumen ke-3 yang ditambahkan. Jadi, dalam hal ini,pT äaT
bisa menjadiäaTT
penghematan 2 byte.Python 3 , 54 byte
I / O dalam bentuk array Boolean.
Cobalah online!
sumber
J, 32 Bytes
Bagaimana itu bekerja:
Saya meninggalkan beberapa @s dan tanda kurung, yang hanya memastikan itu berjalan dengan baik.
Contoh langkah demi langkah:
sumber
Retina , 35 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan: Regex dimulai dengan mencocokkan setiap digit input secara bergantian. Grup tangkapan mencoba untuk mencocokkan angka yang berbeda sebelum atau setelah angka yang dipertimbangkan. The
?
akhiran kemudian memungkinkan penangkapan untuk mencocokkan 0 atau 1 kali;$#2
mengubahnya menjadi digit output.sumber
Pyth , 15 byte
Coba di sini!
Kalau tidak:
mtl{d.:s+hQeBQ3
..aM._M.+++Z.+QZ
.Ini menambahkan elemen pertama dan menambahkan elemen terakhir, lalu mendapatkan semua substring yang panjangnya 3, dan akhirnya mengambil jumlah elemen berbeda di setiap sublist dan menguranginya. Kekacauan ini telah dilakukan pada ponsel di tengah malam jadi saya tidak akan terkejut jika ada beberapa golf yang mudah.
sumber
Gaia , 9 byte
Cobalah online!
Penjelasan
Gaia , 9 byte
Cobalah online!
sumber
C , 309 byte
Bukan bahasa yang cocok untuk bermain golf, tapi layak untuk dijawab. Cobalah di sini !
Penjelasan
sumber
APL + WIN, 29 byte
Meminta input layar sebagai vektor digit dan menampilkan vektor digit.
Penjelasan
sumber
SNOBOL4 (CSNOBOL4) , 273 byte
Cobalah online!
sumber
C (tcc) ,
646256 byteI / O dalam bentuk string. Fungsi f memodifikasi argumen s di tempat.
Cobalah online!
sumber
Common Lisp, 134 byte
Cobalah online!
sumber