Memasukkan
Inputnya adalah bilangan bulat positif tunggal n
Keluaran
Output n
dengan bit set paling signifikan untuk 0
.
Uji Kasus
1 -> 0
2 -> 0
10 -> 2
16 -> 0
100 -> 36
267 -> 11
350 -> 94
500 -> 244
Sebagai contoh: 350
dalam biner adalah 101011110
. Mengatur bit yang paling signifikan (yaitu 1
bit paling kiri ) untuk 0
mengubahnya menjadi 001011110
yang setara dengan bilangan bulat desimal 94
, output. Ini adalah OEIS A053645 .
10
jelas memberi0
: DJawaban:
C (gcc) ,
49444039 byteCobalah online!
sumber
i<=n
dengann/i
untuk -1 byte. Ini bukan golf saya, orang lain mencoba mengeditnya di posting Anda, tetapi saya gulung balik karena suntingan untuk posting golf tidak diterima sesuai dengan aturan komunitas kami.Python 2 , 27 byte
Cobalah online!
26 byte
Sayangnya, ini tidak berfungsi untuk
1
:Cobalah online!
sumber
05AB1E , 5 byte
Cobalah online!
Menghapus bit paling signifikan dari integer N setara dengan menemukan jarak dari N ke kekuatan bilangan bulat tertinggi 2 lebih rendah dari N .
Jadi, saya menggunakan rumus N - 2 lantai (log 2 N) :
.²
- Logaritma dengan basis 2 .ó
- Lantai ke bilangan bulat.o
- 2 dinaikkan menjadi kekuatan hasil di atas.-
- Perbedaan.sumber
b¦C
juga berfungsi ... bukan? Konversi ke biner, MSB selalu di indeks 1, hapus MSB, konversikan kembali.1
!Jelly , 3 byte
Cobalah online!
Penjelasan
sumber
Ḅ
danḊ
codepoint dua byte? Ini akan mengubah ukuran keseluruhan menjadi 5 byte.C (gcc) - 59 byte
Jawaban gcc ini hanya menggunakan operasi bitwise dan aritmatika integer. Tidak ada logaritma di sini! Mungkin memiliki masalah dengan input 0, dan benar-benar non-portabel.
Ini jawaban pertama saya di situs ini, jadi saya suka umpan balik dan peningkatan. Saya yakin bersenang-senang dengan belajar ekspresi bitwise.
sumber
main
, suatu fungsi adalah pengiriman yang valid . Mengubah ini menjadi fungsi dan mengambil input sebagai argumen ke fungsi mengatakan menghemat 18 byte .MATL ,
86 byteCobalah online!
Disimpan dua byte berkat Cinaski. Beralih ke pengindeksan tugas alih-alih pengindeksan referensi lebih pendek 2 byte :)
Penjelasan:
sumber
4L
bukan[2J]
.tZlcW-
Java (OpenJDK 8) , 23 byte
Cobalah online!
Maaf, bawaan: - /
sumber
n->n^1<<(int)Math.log2(n)
akan berfungsi dan kemungkinan lebih pendek dari 38 byte. Itu adalah ide saya yang kedua (belum teruji), jika yanghighestOneBit
satu tidak bekerja dengan tepat. Karena penasaran, apa solusi Andan->n^1<<(int)(Math.log(n)/Math.log(2))
karenaMath.log2
tidak ada di Jawa. ; P HanyaMath.log
,Math.log10
danMath.loglp
tersedia.Math.log2
memang tidak ada ... Buruk saya. Lihat? Satu metode yang bagus (highestOneBit
) ada tetapi tidak ada yang lain (Math.log2
). Java aneh ;-)Sekam , 3 byte
Cobalah online!
Penjelasan:
sumber
Ohm v2 , 3 byte
Cobalah online!
sumber
Python 2 , 27 byte
Cobalah online!
Penjelasan
sumber
2**len(bin(n))/8
bisa juga dieja1<<len(bin(n))-3
, dan kemudian akan berfungsi di 2 dan 3 (tidak ada byte yang disimpan / ditambahkan).Python 3 , 30 byte
-8 Bytes berkat caird coinheringaahing. Saya mengetiknya dari memori. :Hai
Cobalah online!
sumber
lambda n:int(bin(n)[3:],2)
?Mathematica, 37 byte
Cobalah online!
sumber
JavaScript,
2220 byteDisimpan 2 byte berkat ovs
Cobalah online!
Pendekatan lain, 32 byte
Cobalah online!
sumber
.slice`1`^0
ketika.slice(1)^0
akan bekerja dengan baik, hahaJ, 6 byte
Cukup mudah.
Penjelasan
sumber
APL (Dyalog) , 10 byte
Fungsi awalan Tacit.
Cobalah online!
2∘⊥
... decode dari base-2 ......
⍣¯1
negative one time (mis. Encode di base-2)1↓
jatuhkan bit pertama2⊥
decode dari base-2sumber
Ruby, 26 byte
-7 Bytes terima kasih kepada Ventero. -2 Bytes berkat historrat.
sumber
->n{n.to_s(2)[1..-1].to_i 2}
->n{/./=~'%b'%n;$'.to_i 2}
C (gcc), 38 byte
Built-in gcc digunakan.
sumber
31-
dengan~
harus menghemat dua byte.Majelis ARM,
4643 byte(Anda dapat menghilangkan register tujuan pada add ketika sama dengan sumber)
sumber
shr
/shl
/ret
dan ingin bukan sesuatu sepertilsr
/lsl
/bx lr
.Pyth, 5 byte
Suite uji.
Penjelasan:
sumber
Alice , 8 byte
Cobalah online!
Penjelasan
sumber
Japt , 6 byte
Cobalah online!
Penjelasan
Jika input
1
dapat gagal: 4 byteCobalah online!
Penjelasan : dapatkan biner input (
¢
), iris dulu char (Å
), parse sebagai biner kembali ke angka (n2
).sumber
Oktaf , 20 byte
Cobalah online!
sumber
APL (Dyalog Unicode) , 9 byte
Cobalah online!
-1 byte terima kasih kepada Adam
sumber
⊢-2*∘⌊2⍟⊢
menyimpan satu byte.CJam , 7 byte
Cobalah online!
Penjelasan:
Gunakan kembali MSB (yang selalu 1) untuk menghindari keharusan menghapusnya; yang setara tanpa trik itu adalah
{2b1>2b}
atau{2b(;2b}
.sumber
Retina ,
1513 byteCobalah online!
Input dan output dalam unary (test suite mencakup konversi dari dan ke desimal untuk kenyamanan).
Penjelasan
Ini cukup mudah dilakukan di unary. Yang ingin kami lakukan adalah menghapus kekuatan 2 terbesar dari input. Kami dapat mencocokkan kekuatan 2 dengan beberapa referensi ke depan. Sebenarnya lebih mudah untuk mencocokkan nilai dari formulir 2 n -1 , jadi kami akan melakukannya dan mencocokkan satu 1 secara terpisah:
Grup
1
dapat mencocokkan satu1
di awal untuk memulai sesuatu, atau cocok dengan dua kali apa yang dilakukan pada iterasi terakhir. Jadi itu cocok1
, lalu2
, kemudian4
dan seterusnya. Karena ini ditambahkan, kami selalu kekurangan 2, yang kami perbaiki dengan1
pada akhirnya.Karena mengikuti garis makan, pertandingan hanya dihapus dari input.
sumber
R , 28 byte
Cobalah online!
Cara termudah untuk menghitung bit paling signifikan melalui
2 ^ floor(log2(x))
daripada melakukan konversi basis, yang cukup bertele-tele dalam Rsumber
PARI / GP, 18 byte
Solusi alternatif:
sumber
n->n-2^logint(n,2)
? Yang kedua tidak didukung dalam versi PARI / GP saya, atau dalam versi yang digunakan oleh tio.run . Apakah itu fungsi baru?exponent
ditambahkan 5 hari yang lalu, dibandingkan dengan tantangan ini yang ditambahkan kemarin. :)Haskell ,
3229 byteCobalah online!
-3 byte terima kasih kepada @Laikoni
Solusi yang lebih lama, 32 byte
Cobalah online!
sumber
f=
varian pertama. Selain ituz<-2*y=x!z
menyimpan byte: Cobalah secara online!Excel, 20 byte
sumber
Excel,
3631 byte-5
byte terima kasih kepada @ IanM_Matrix1Tidak ada yang menarik.
sumber