The urut kurva naga (atau biasa kertas urutan lipat) adalah urutan biner. a(n)
diberikan oleh negasi dari bit kiri dari 1 paling tidak signifikan n
. Sebagai contoh untuk menghitung, a(2136)
pertama-tama kita mengkonversi ke biner:
100001011000
Kami menemukan bagian terkecil kami
100001011000
^
Ambil bit ke kiri
100001011000
^
Dan kembalikan negasinya
0
Tugas
Diberikan bilangan bulat positif sebagai input, output a(n)
. (Anda dapat menampilkan dengan integer atau boolean). Anda harus berusaha membuat kode sekecil mungkin yang diukur dengan byte.
Uji Kasus
Berikut adalah 100 entri pertama secara berurutan
1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 1
100001011000
adalah a0
. Apakah maksud Anda yang paling tidak penting1
?Jawaban:
Mathematica 25 Bytes
Cara lain untuk melakukan ini:
56 byte
58 byte
sumber
Python 3 ,
2221 byte1 byte berkat produk ETH.
Cobalah online!
Ftw aritmatika bitwise.
sumber
0+(...)
?n&1
dimasukkan ke dalam tanda kurung? Atau apakah1+(n^~-n)<1
itu bisa dimasukkan ke dalam tanda kurung? Atau apakah itu1+(n^~-n)
...&
memiliki prioritas lebih rendah, jadi1+(n^~-n)
Retina ,
383429 byteCobalah online!
Martin dan Leaky pada dasarnya datang dengan ide ini, untuk 5 byte lagi!
Mengubah input menjadi unary, dan kemudian secara progresif membagi angka dengan 2. Setelah itu tidak dapat melakukan hal itu secara merata lagi (yaitu angkanya ganjil), maka ia akan menghilangkan tambalan 4 dari input, menghitung hasil dari mod operasi terakhir 4 Akhirnya, ini memeriksa jika hasilnya adalah 1, yang berarti digit di sebelah kiri dari bit 1 yang paling signifikan adalah nol. Jika itu benar, hasil akhirnya adalah 1, jika tidak maka nol.
sumber
Jeli , 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Alice , 8 byte
Cobalah online!
Mengambil input sebagai titik kode karakter Unicode dan mengeluarkan hasilnya sebagai byte 0x00 atau 0x01.
Untuk pengujian, berikut adalah versi I / O desimal pada 12 byte yang menggunakan algoritma yang sama persis (hanya I / O yang berbeda):
Cobalah online!
Jika Alice adalah bahasa golf dan tidak memerlukan I / O dan penghentian program secara eksplisit, ini hanya akan memakan waktu 5 byte (
2z1xn
) mengalahkan 05AB1E dan Jelly.Penjelasan
sumber
05AB1E , 6 byte
Cobalah online!
sumber
Bijaksana ,
282016 byteCobalah online!
Penjelasan
Ini adalah port jawaban Python Leaky Nun. Sayangnya itu tidak bekerja pada TIO karena versi TIO dari interpreter agak ketinggalan jaman.
Kita mulai dengan membuat 3 salinan dari input kita dengan
::
, kita kemudian mengurangi salinan atas dengan 1. Ini akan membalik semua bit sampai yang pertama. Kita lalu xor ini dengan salinan lain dari input kita. Karena semua bit hingga 1 pertama pada input kami telah dibalik, ini akan menghasilkan semua bit tersebut menjadi 1 pada hasilnya. Jika kemudian kita tambahkan satu~-
ke hasil, kita akan mendapatkan satu 1 di tempat di sebelah kiri dari kita paling tidak signifikan 1. Kita DAN ini dengan input untuk mendapatkan bit dari input. Sekarang kita akan memiliki0
iff bit itu mati dan kekuatan 2 iff bit itu menyala, kita bisa mengubahnya menjadi satu1
atau0
dengan:[?>]
. Setelah ini dilakukan, kita hanya perlu meniadakan bit~-^
dan kita selesai.sumber
Python 2 , 19 byte
Cobalah online!
sumber
Haskell ,
454339 byte6 byte disimpan berkat nimi
Cobalah online!
sumber
div
bukanquot
.divMod
:f x|(d,m)<-divMod x 2=[mod(1+d)2,f d]!!m
|(d,m)<-divMod x 2
adalah penjaga pola untuk diikatd
kediv x 2
danm
kemod x 2
. Kami menggunakanm
untuk mengindeks daftar dua elemen[...,...]!!m
. Dalam kasusm==0
kami kembalimod(1+d)2
dan dalam kasusm==1
f d
.[f d,mod(1+d)2]
. Cobalah online! .x86 Kode Mesin,
171615 byte:Mengasumsikan ABI di mana parameter didorong pada tumpukan dan nilai kembali ada di
AL
register.Ini dibongkar sebagai berikut:
sumber
JavaScript (ES6),
1714 byteSunting: Disimpan 3 byte dengan mengirimkan jawaban @ Dennis ketika saya perhatikan bahwa output boolean dapat diterima.
sumber
C (gcc) , 20 byte
Cobalah online!
sumber
INTERCAL , 50 byte
Operator INTERCAL unary sangat cocok untuk ini, jadi saya memutuskan untuk menulis posting pertama saya.
sumber
Haskell , 33 byte
Cobalah online!
Menggunakan pengindeksan 0.
sumber
~
dilakukan dalam konteks ini? Saya mengerti bahwa ini adalah pertandingan yang malas, tetapi mengapa Anda membutuhkan pertandingan yang malas?Jelly ,
76 byte1 byte berkat Erik the Outgolfer.
Cobalah online!
Program yang lebih panjang
Họ¡2&2Ị
Bt0ṫ-ḄỊ
sumber
ṖṪṆ
(sebagai jawaban saya yang dihapus) alih-alihṫ-ḄỊ
.BUḌDḊḢ¬
,,, ,
109 bytesPenjelasan
Ambil input sebagai 3 misalnya.
sumber
Haskell , 26 byte
Cobalah online!
Output Boolean.
sumber
Oktaf , 34 byte
Cobalah online!
Penjelasan:
sumber
Pengajuan:
Python 2 ,
4139 byteCobalah online!
-2 byte terima kasih kepada FryAmTheEggman
Solusi Awal:
Python 2 , 43 byte
Cobalah online!
sumber
~-x&1
bekerja untuk kondisi sementara, saya pikir.MATL ,
1110 byteCobalah online! Atau lihat 100 output pertama .
Penjelasan
sumber
Pari / GP , 20 byte
Menggunakan simbol Kronecker .
Cobalah online!
sumber
Befunge-98 , 19 byte
Cobalah online!
sumber
SCALA, 99 (78?) Karakter, 99 (78?) Byte
dimana
i
inputnyaSeperti yang Anda lihat, saya menghemat 21 byte jika saya tidak menangani nol (seperti yang penulis lakukan dalam test case-nya):
Ini codegolf pertama saya jadi saya harap saya melakukannya dengan baik :)
Cobalah online! Meskipun cukup lama untuk menghitung lol.
sumber
C (gcc) ,
3531 byteBeralih ke implementasi rekursif. Cobalah online!
sumber
Java 8, 17 byte
Port langsung jawaban LeakyNun's Python 3 . Saya tidak cukup terbiasa dengan operasi bitwise dan prioritas operator untuk melihat solusi yang lebih pendek; mungkin ada cara untuk menghindari tanda kurung tambahan?
sumber
Japt ,
10 89 byteCobalah online!
Penjelasan
sumber
false
semua karena karakter (0 atau 1) selalu berupa string.1
saat ini.JavaScript (ES6),
5334 bytesumber
a=>!+(a=a.toString(2))[a.lastIndexOf(1)-1]
PHP> = 7.1, 32 byte
PHP Sandbox Online
PHP , 40 byte
Cobalah online!
PHP , 41 byte
Cobalah online!
sumber
Gangguan Umum, 56 byte
Cobalah online!
sumber
Chip , 93 byte
Mengambil input sebagai byte endian kecil. (TIO memiliki sedikit python yang melakukan ini untuk Anda). Memberikan output sebagai salah satu
0x0
atau0x1
. (TIO menggunakan xxd untuk memeriksa nilainya).Cobalah online!
Bagaimana ini?
Chip melihat input satu byte pada satu waktu, sehingga penanganan input multibyte menambahkan sejumlah besar, tetapi tidak dekat seperti yang saya takutkan.
Mari kita masuk ke dalamnya:
Ini adalah
HZ
, bit tinggi dari byte sebelumnya (jika ada satu), danA
-G
, tujuh bit lebih rendah dari byte saat ini. Ini digunakan untuk menemukan bit set angka terendah.Ketika bit set terendah ditemukan, kami memiliki beberapa hal yang harus dilakukan. Potongan pertama ini mengatakan "jika kita memiliki bit yang diset (
)
's), kemudian berhentiS
menekan output, dant
berkembang setelah kita mencetak jawabannya.Bit mana pun dari byte saat ini (
A
-H
) hanya didahului oleh sekelompok nol kemudian satu (\
dan/
: ini melihat bit langsung di utara mereka; kita dapat percaya bahwa semua bit sebelumnya nol) dilewatkan ke kabel di hak (v
,,'
...), maka nilai mana pun yang dibalik dan diberikan sebagai bit output yang rendah (~a
).sumber