Sedikit mengapung dari LSB ke MSB bergerak satu posisi setiap kali sampai mengapung ke atas wadah:
0000
0001
0010
0100
1000
Setelah satu bit mengapung ke atas, bit lain memulai perjalanannya dan berhenti ketika bertemu bit lain:
1001
1010
1100
Ini terjadi sampai wadah diisi dengan bit:
1101
1110
1111
Tantangan
Diberikan angka integer, tampilkan " Urutan mengambang bit " untuk sebuah wadah dengan jumlah bit itu.
- Setiap istilah urutan dapat dipisahkan oleh pemisah pilihan Anda.
- Mengedit : Urutan harus ditampilkan sebagai angka integer desimal, dimulai oleh satuan panas pertama:
0
. - Ukuran kontainer harus lebih besar dari nol dan hingga jumlah bit integer terbesar yang didukung oleh bahasa pilihan Anda. Anda dapat mengasumsikan bahwa input selalu cocok dengan persyaratan ini.
Contohnya
Hanya urutan numerik yang diperlukan, representasi biner ditampilkan sebagai contoh:
Untuk 1 :
0 1
0 -> 0 1 -> 1
Untuk 3 :
0 1 2 4 5 6 7
000 -> 0 001 -> 1 010 -> 2 100 -> 4 101 -> 5 110 -> 6 111 -> 7
Untuk 4 :
0 1 2 4 8 9 10 12 13 14 15
0000 -> 0 0001 -> 1 0010 -> 2 0100 -> 4 1000 -> 8 1001 -> 9 1010 -> 10 1100 -> 12 1101 -> 13 1110 -> 14 1111 -> 15
Untuk 8 :
0 1 2 4 8 16 32 64 128 129 130 132 136 144 160 192 193 194 196 200 208 224 225 226 228 232 240 241 242 244 248 249 250 252 253 254 255
00000000 -> 0 00000001 -> 1 00000010 -> 2 00000100 -> 4 00001000 -> 8 … … … 11111000 -> 248 11111001 -> 249 11111010 -> 250 11111100 -> 252 11111101 -> 253 11111110 -> 254 11111111 -> 255
[0.0, 1.0]
0 -> [0, 1]
Jawaban:
05AB1E , 10 byte
Cobalah online!
sumber
.0
default untuk bilangan bulat, tetapi tidak yakin. Saya pribadi biasanya memasukkanï
footer ke dalam pretty-print dan tidak memasukkannya dalam byte-count.Python 2 , 45 byte
Cobalah online!
Ternyata lebih pendek untuk menghasilkan
2**n
minus setiap istilah dalam urutan inputn
. Jika kita melihat ekspansi biner mereka, di bawah inin=5
, kita melihat pola segitiga 1 yang bagus dalam ekspansi biner.Setiap angka diperoleh dari yang sebelumnya dengan menghapus yang paling kanan dalam ekspansi biner, kecuali jika itu akan membuat angka 0, kita mengurangi 1 sebagai gantinya, membuat blok baru 1 yang memulai segitiga kecil baru. Ini diimplementasikan sebagai
y=y&y-1or~-y
, di manay&y-1
ada sedikit trik untuk menghapus paling kanan 1, danor~-y
memberikany-1
sebaliknya jika nilai itu 0.Python 2 , 49 byte
Cobalah online!
Fungsi yang mencetak, mengakhiri dengan kesalahan. Program yang lebih bagus di bawah ini ternyata lebih lama.
51 byte
Cobalah online!
sumber
Jelly ,
1110 bytePelabuhan @Grimy 's 05AB1E jawaban , jadi pastikan untuk upvote dia!
-1 byte terima kasih kepada @Grimy .
Cobalah online.
Penjelasan:
sumber
R_2
->Ḷ’
untuk -1.Ḷ
adalah satu-satunya rentang yang masuk akal , saya benar-benar berharap 05AB1E memiliki byter tunggal untuk itu.Perl 5 (
-n
),4140 byte-1 byte thanls ke Xcali
TIO
"{0,1}"x$_
: string"{0,1}"
berulang n kali"0b".
: menyatu dengan"0b"
glob
: glob expansion (produk kartesian)map{
...}
: untuk setiap elemen/01.*1/||
: untuk melewati saat01
diikuti oleh sesuatu kemudian1
say oct
: untuk mengkonversi ke desimal dan katakansumber
JavaScript (ES6), 43 byte
Jika ragu, gunakan metode xnor .
Cobalah online!
JavaScript (ES6),
59 57 5552 byteCobalah online!
Bagaimana?
Kami mendefinisikanp(x) 2 x p ( 0 ) = 0 oleh konvensi.
Menggunakanhal Sebuahn Sebuahn( 0 ) = 0
Commented
sumber
Python 2,
9576 bytesTry it online!
sumber
Perl 6, 43 bytes
Try it online!
Anonymous code block that takes a number and outputs the sequence separated by newlines. This works by starting with 0 repeated n times then replacing either
01
with10
or the last0
with a1
until the number is just ones.Or 40 bytes, using Nahuel Fouilleul's approach
Try it online!
sumber
01
with10
or the last0
with a1
until the number is just ones" That's a genius move!Python 2, 60 bytes
Try it online!
Python 3, 76 bytes
Try it online!
sumber
Python 2, 67 bytes
Try it online!
sumber
Python 3, 62 bytes
Try it online!
The idea is more or less the same as @Arnauld's solution.
Another 65-byte solution:
Try it online!
sumber
Jelly, 12 bytes
Try it online!
sumber
05AB1E,
1312 bytes-1 byte thanks to @Grimy (also take a look at his shorter approach here).
Try it online or verify all test cases.
Explanation:
sumber
oL<ʒbIj1Û1¢2‹
. Doesn't look like I can get it lower.oL<ʒbIj1ÛSO2‹
and was trying to see where my error was. :) But I'm glad to see you aren't able to find a shorter version for one of my answers for a change. ;p (inb4 you find a shorter one after all xD)SO2‹
can be 3 bytes somehow perhaps, but I'm not seeing it and also not entirely sure.. There are some alternatives, likeSO1~
orSÆ>d
, but I'm unable to find a 3-byter.SO!
. Pretty sure I have some old answers using2‹
that could benefit from this as well.Retina, 26 bytes
Try it online! Outputs in binary. If that's not acceptable, then for 39 bytes:
Try it online! Explanation:
Convert the input into a string of
n
zeros.Match all possible non-empty substrings.
For each substring, output: the prefix with
0
s changed to1
s; the suffix; the match with the initial0
changed to1
.Convert from binary to decimal.
sumber
Brachylog, 27 bytes
Try it online!
Outputs out of order and with duplicates. If that's not okay, tack
do
onto the end.sumber
Charcoal, 19 bytes
Try it online! Link is to verbose version of code. Explanation:
sumber
Perl 5, 40 bytes
Try it online!
sumber
Retina, 24 bytes
Outputs in binary. Input should have a trailing newline.
Attempt at explanation:
I tried to avoid the 3 bytes long
/0/
regex option by rearranging the options, but couldn't.Try it online!
sumber
C (clang), 73 bytes
Try it online!
sumber
k4,
2824 bytes@Grimy's approach ported to k4
edit: -4 thanks to ngn!
sumber
!:'1+|!:
->|,\!:
xexp
|,\!:
seems so obvious now that i see it!