Tantangan
Diberikan input integer di x
mana 1 <= x <= 255
, kembalikan hasil dari kekuatan dua yang saat dijumlahkan beri x
.
Contohnya
Diberikan input:
86
Program Anda harus menampilkan:
64 16 4 2
Memasukkan:
240
Keluaran:
128 64 32 16
Memasukkan:
1
Keluaran:
1
Memasukkan:
64
Keluaran:
64
Output mungkin mengandung nol jika kekuatan dua tidak ada dalam jumlah.
Misalnya, input 65
dapat dihasilkan 0 64 0 0 0 0 0 1
.
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat di setiap bahasa menang.
code-golf
binary
code-golf
sequence
integer
chess
code-golf
number
arithmetic
matrix
code-golf
code-golf
combinatorics
grid
set-partitions
code-golf
array-manipulation
graph-theory
code-golf
number
code-golf
string
decision-problem
code-golf
matrix
cellular-automata
3d
code-challenge
restricted-source
printable-ascii
code-golf
board-game
code-golf
geometry
grid
code-golf
word-puzzle
code-golf
matrix
sorting
code-golf
code-golf
string
decision-problem
code-golf
matrix
cellular-automata
code-golf
decision-problem
code-golf
math
number
arithmetic
restricted-source
code-golf
code-golf
number
integer
matrix
code-golf
date
code-golf
matrix
code-golf
sequence
combinatorics
chemistry
code-golf
array-manipulation
popularity-contest
code-golf
code-golf
natural-language
code-golf
number
integer
sorting
substitution
code-golf
string
number
date
encode
code-golf
decision-problem
code-golf
string
subsequence
code-golf
string
alphabet
code-golf
SpookyGengar
sumber
sumber
Jawaban:
JavaScript (ES6), 28 byte
Cobalah online!
sumber
f=n=>n&&f(n&~-n)+[,n&-n]
.Bash Murni , 20
Cobalah online!
Penjelasan
sumber
Jelly , 4 byte
-2 karena kita dapat menghasilkan nol menggantikan kekuatan 2 yang tidak terpakai :)
Cobalah online!
Bagaimana?
sumber
Jelly , 6 byte
Cobalah online!
Penjelasan
TETAPI di sini adalah penjelasan (catatan: Saya berasumsi bahwa kita hanya dapat menghasilkan kekuatan 2 sendiri dan tidak ada yang lain):
"Bukti" bahwa itu berfungsi dengan benar. Representasi standar integerX dalam basis 2 adalah daftar { x1, x2, x3, ⋯ , xn} , di mana xsaya∈ { 0 , 1 } ,∀i ∈ 1 , n¯¯¯¯¯¯¯¯ , sehingga:
X= ∑i = 1nxsaya⋅ 2n - i
Indekssaya sehinggaxsaya= 0 jelas tidak memiliki kontribusi sehingga kita hanya tertarik dalam menemukan orang-orang sehinggaxsaya= 1 . Karena mengurangisaya darin tidak nyaman (kekuatan dua semuanya memiliki eksponen dari bentukn - i , di manasaya adalah indeks dari1 ), alih-alih menemukan indeks kebenaran dalam daftar ini, kita membalikkannya dan kemudian menemukannya dengan "mundur" 2 ke kekuatan itu.
UT
. Sekarang kita telah menemukan indeks yang benar yang harus kita lakukan adalah menaikkansumber
’
sana ...BUT2*H
akan bekerja sekalipun.Python , 35 byte
Little-endian dengan nol pada kekuatan 2 yang tidak digunakan.
Cobalah online!
sumber
APL (Dyalog Extended) , 7 byte SBCS
Fungsi awalan diam-diam anonim. Membutuhkan pengindeksan berbasis 0 (
⎕IO←0
).Cobalah online!
2
dua*
pangkat dari⍸
yang ɩ ndices mana yang benar⍢
sementara⌽
terbalik⍤
dari⊤
representasi binersumber
Sledgehammer 0,2, 3 byte
Dekompresi menjadi
{intLiteral[2],call[NumberExpand,2]}
.Sledgehammer adalah kompresor untuk kode Bahasa Wolfram menggunakan Braille sebagai halaman kode. Ukuran aktual di atas adalah 2,75 byte, tetapi karena aturan saat ini pada meta, padding ke byte terdekat dihitung dalam ukuran kode.
sumber
05AB1E , 3 byte
Port of @JonathanAllan menjawab Jelly , jadi pastikan untuk membatalkannya!
Berisi angka nol (termasuk angka nol untuk trailing).
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
bitwise and
digunakan di osabie. Bagus&
. XD Saya telah menggunakan Bitwise-XOR beberapa kali, seperti di sini atau di sini dan Bitwise-TIDAK sekali di sini (yang kemudian saya hapus lagi setelah bermain golf lebih lanjut ..). Saya menggunakan Bitwise-AND, XOR, OR, NOT, SHIFT, dll. Cukup sering di Jawa, tetapi di 05AB1E tidak begitu banyak. :)Catholicon , 3 byte
Cobalah online!
Penjelasan:
sumber
Bahasa Wolfram (Mathematica) , 17 byte
Cobalah online!
Mathematica menyerang lagi.
sumber
R ,
2723 byteCobalah online!
Kode dan penjelasan yang belum dibuka:
sumber
C # (Visual C # Interactive Compiler) , 29 byte
Berisi 5 karakter yang tidak patut dicetak.
Penjelasan
Cobalah online!
sumber
n=>new int[8].Select((j,i)=>1<<i&n).Where(i=>i!=0)
Bagian sebelumnyaWhere
adalah lima byte lebih pendek btwThe output may contain zeros
n=>new int[8].Select((j,i)=>1<<i&n)
panjangnya 35 byte dan kita tidak akan perlu tambahan bendera dan penyandian teks.n=>"INSERT ASCII HERE".Select(a=>1<<a&n)
Tapi saya menggunakan perangkat seluler yang tidak dapat menampilkan atau mengetik yang tidak diinginkan, jadi saya harus menunggu sampai saya pulang untuk memperbarui jawabannyaC # (Visual C # Interactive Compiler) , 38 byte
Cobalah online!
sumber
1
,2
,4
,8
,16
, dll (yangx>y
harusx>=y
sebaliknya)./u:System.Linq.Enumerable
dan coba ini selama 31 byte/u:System.Linq.Enumerable
": PC (gcc) , 39 byte
Cobalah online!
sumber
05AB1E, 7 byte
penjelasan:
Cobalah online!
sumber
Haskell , 29 byte
Cobalah online!
sumber
Ruby , 25 byte
Cobalah online!
sumber
C (dentang) ,
1331106358 byteSolusi 58-byte berkat @ceilingcat .
Cobalah online!
sumber
main(){}
dan tipe pengembalian default ke int. Sama untuk variabel di lingkup global. Juga, setidaknya pada implementasi normal seperti dentang, printf, dan scanf bekerja tanpa prototipe. Anda mendapatkan peringatan tentu saja, tetapi itu masih berlaku C89 (mungkin) atau setidaknya K&R C bagi mereka untuk dinyatakan secara implisit. Jenis objek C yang Anda lewati sebagai args mendefinisikan cara mereka dilewati, jadi achar*
danint*
Just Work tanpa memotong pointer ke 32-bit pada x86-64 atau apa pun. (Promosi argumen default terjadi, sama seperti untuk fungsi variadik yang sebenarnya.)&
untuk memeriksa apakah bit diatur. Sepertiy&(1<<x)&&printf("%d ",1<<x);
. Atau untuk tidak melewatkan nol, adilprintf("%d ", y&(1<<x))
. Atau alih-alih menghitung posisi bit, gunakanx=256
danx>>=1
untuk menggeser topeng.main(y){int x=256;for(scanf("%d",&y);x>>=1;)printf("%d ",y&x);}
63 byte Cobalah secara online! dentang bahkan akan mengkompilasi itu dengan-std=c11
MATL , 5 byte
Cobalah online!
Penjelasan
Pertimbangkan input
86
sebagai contoh.sumber
Perl 6 ,
1612 byte-4 byte terima kasih kepada Jonathan Allan
Cobalah online!
Mengembalikan Semua Persimpangan dengan 8 elemen. Ini adalah cara pengembalian yang agak non-standar, tetapi secara umum, persimpangan dapat bertindak seperti yang diperintahkan (setidaknya sampai autothreading diterapkan) daftar dan dimungkinkan untuk mengekstrak nilai dari satu.
Penjelasan:
sumber
Japt,
85 byteCobalah
Alternatif
Disarankan oleh Oliver untuk menghindari
0
s dalam output menggunakan-mf
flag.Cobalah
sumber
N&2pU
dengan-mf
menghindari0
s05AB1E , 9 byte
Cobalah online!
Ini juga benar untuk 6-byte, tetapi tidak lengkap pada waktunya di TIO untuk 86:
05AB1E , 6 byte
Cobalah online!
sumber
15
, alih-alih[1,2,4,8]
2**0
, tangkapan yang bagus.Ý
selesaiL
.L
bukannyaÝ
pada awalnya dalam jawaban saya.Julia 0,6 , 13 byte
Cobalah online!
sumber
CJam , 12 byte
Cobalah online!
sumber
K (oK) ,
1916 byte-3 byte terima kasih kepada ngn!
Cobalah online!
oK tidak memiliki
power
operator, itu sebabnya saya memerlukan fungsi pembantu{*/x#2}
(salin 2x
kali dan kurangi daftar yang dihasilkan dengan perkalian)sumber
{
x}
Alchemist , 125 byte
Cobalah online! atau Uji setiap input!
Penjelasan
sumber
PHP ,
4139 byteCobalah online!
Atau 38 tanpa
>>=
operator yang menyenangkan dan PHP 5.6+:Atau 36 dengan output little-endian ("0 2 4 0 16 0 64 0"):
Sungguh saya hanya ingin menggunakan
>>=
operator, jadi saya tetap menggunakan 39 .Tes:
sumber
TSQL,
4339 byteTidak dapat menemukan solusi mewah yang lebih pendek, jadi inilah loop standar. -4 byte berkat MickyT dan KirillL
Cobalah
sumber
,@ int=128s:print @y&@ set @/=2IF @>0GOTO s
. Ini mengisyaratkan oleh @ KirillL untuk jawaban RPython 2 ,
4340 byteCobalah online!
sumber
C # (Visual C # Interactive Compiler), 33 byte
Port of @Arnauld 's JavaScript (ES6) menjawab , jadi pastikan untuk membesarkannya!
Cobalah online.
Penjelasan:
sumber