Le défi
Étant donné une entrée entière x
où 1 <= x <= 255
, renvoyer les résultats de puissances de deux qui, une fois sommées, donnent x
.
Exemples
Compte tenu de l'entrée:
86
Votre programme devrait produire:
64 16 4 2
Contribution:
240
Sortie:
128 64 32 16
Contribution:
1
Sortie:
1
Contribution:
64
Sortie:
64
La sortie peut contenir des zéros si la puissance certaine de deux n'est pas présente dans la somme.
Par exemple, saisissez 65
peut sortir 0 64 0 0 0 0 0 1
.
Notation
C'est le golf de code , donc la réponse la plus courte dans chaque langue l'emporte.
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
la source
la source
Réponses:
JavaScript (ES6), 28 octets
Essayez-le en ligne!
la source
f=n=>n&&f(n&~-n)+[,n&-n]
.Pure Bash , 20
Essayez-le en ligne!
Explication
la source
Gelée , 4 octets
-2 puisque nous pouvons produire des zéros à la place des puissances inutilisées de 2 :)
Essayez-le en ligne!
Comment?
la source
Gelée , 6 octets
Essayez-le en ligne!
Explication
MAIS voici une explication (note: j'avais supposé que nous ne pouvions sortir que les puissances de 2 elles-mêmes et rien d'autre):
"Preuve" que cela fonctionne correctement. La représentation standard d'un entierX dans la base 2 est une liste {x1,x2,x3,⋯,xn} , où xi∈{0,1},∀i∈1,n¯¯¯¯¯¯¯¯ , tel que:
X=∑i=1nxi⋅2n−i
Les indicesi tels quexi=0 n'ont évidemment aucune contribution, nous ne sommes donc intéressés qu'à trouver ceux tels quexi=1 . Puisque soustrairei den n'est pas commode (les puissances de deux ont toutes des exposants de la formen−i , oùi est n'importe quel indice d'un1 ), au lieu de trouver les indices véridiques dans cette liste, nous l'inversons puis les retrouvons "à l'envers" avec 2 à ces pouvoirs.
UT
. Maintenant que nous avons trouvé les bons indices, tout ce que nous avons à faire est d'éleverla source
’
là-bas ...BUT2*H
cela fonctionnerait cependant.Python , 35 octets
Little-endian avec des zéros à des puissances inutilisées de 2.
Essayez-le en ligne!
la source
APL (Dyalog Extended) , SBCS 7 octets
Fonction de préfixe tacite anonyme. Nécessite une indexation basée sur 0 (
⎕IO←0
).Essayez-le en ligne!
2
deux*
élevé à la puissance de⍸
la ɩ ndices où vrai⍢
alors⌽
inversé⍤
de⊤
la représentation binairela source
Sledgehammer 0,2, 3 octets
Se décompresse en
{intLiteral[2],call[NumberExpand,2]}
.Sledgehammer est un compresseur pour le code Wolfram Language utilisant le braille comme page de codes. La taille réelle de ce qui précède est de 2,75 octets, mais en raison des règles actuelles sur les méta, le remplissage à l'octet le plus proche est compté dans la taille du code.
la source
05AB1E , 3 octets
Port de @JonathanAllan 's Jelly answer , alors assurez-vous de lui donner un vote positif!
Contient des zéros (y compris des charges de zéros de fin).
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
bitwise and
utilisé en osabie. Joli.&
. XD J'ai utilisé Bitwise-XOR plusieurs fois, comme ici ou ici et Bitwise-NOT une fois ici (que j'ai retiré plus tard après avoir joué plus loin ..). J'utilise Bitwise-AND, XOR, OR, NOT, SHIFT, etc. assez souvent en Java, mais en 05AB1E pas tellement. :)Catholicon , 3 octets
Essayez-le en ligne!
Explication:
la source
Wolfram Language (Mathematica) , 17 octets
Essayez-le en ligne!
Mathematica frappe à nouveau.
la source
R ,
2723 octetsEssayez-le en ligne!
Code déroulé et explication:
la source
C # (Visual C # Interactive Compiler) , 29 octets
Contient 5 caractères non imprimables.
Explication
Essayez-le en ligne!
la source
n=>new int[8].Select((j,i)=>1<<i&n).Where(i=>i!=0)
la partie précédenteWhere
est plus courte de cinq octetsThe output may contain zeros
n=>new int[8].Select((j,i)=>1<<i&n)
fait 35 octets de long et nous n'aurons pas besoin de drapeaux et d'encodages de texte supplémentaires.n=>"INSERT ASCII HERE".Select(a=>1<<a&n)
mais je suis sur un appareil mobile qui ne peut pas afficher ou taper les caractères non imprimables, donc je vais devoir attendre jusqu'à ce que je rentre à la maison pour mettre à jour la réponseC # (Visual C # Interactive Compiler) , 38 octets
Essayez-le en ligne!
la source
1
,2
,4
,8
,16
, etc. (lex>y
devrait être à lax>=y
place)./u:System.Linq.Enumerable
et essayer ce pour 31 octets/u:System.Linq.Enumerable
": PC (gcc) , 39 octets
Essayez-le en ligne!
la source
05AB1E, 7 octets
explication:
Essayez-le en ligne!
la source
Haskell , 29 octets
Essayez-le en ligne!
la source
Ruby , 25 octets
Essayez-le en ligne!
la source
C (bruit) ,
1331106358 octetsSolution de 58 octets grâce à @ceilingcat .
Essayez-le en ligne!
la source
main(){}
et le type de retour par défaut int. Idem pour les variables à portée globale. De plus, au moins sur les implémentations normales comme clang, printf et scanf fonctionnent sans prototypes. Vous obtenez des avertissements bien sûr, mais c'est toujours C89 valide (peut-être) ou au moins K&R C pour qu'ils soient implicitement déclarés. Les types des objets C que vous passez en tant qu'args définissent comment ils sont passés, donc unchar*
et fonctionneraint*
simplement sans tronquer les pointeurs à 32 bits sur x86-64 ou quoi que ce soit. (Les promotions d'argument par défaut se produisent, comme pour les fonctions variadiques qu'elles sont de toute façon.)&
pour vérifier si un bit est défini. Commey&(1<<x)&&printf("%d ",1<<x);
. Ou pour ne pas sauter de zéros, justeprintf("%d ", y&(1<<x))
. Ou au lieu de compter les positions des bits, utilisezx=256
etx>>=1
pour déplacer le masque.main(y){int x=256;for(scanf("%d",&y);x>>=1;)printf("%d ",y&x);}
63 octets Essayez-le en ligne! clang compilera même cela avec-std=c11
MATL , 5 octets
Essayez-le en ligne!
Explication
Considérez l'entrée
86
comme un exemple.la source
Perl 6 ,
1612 octets-4 octets grâce à Jonathan Allan
Essayez-le en ligne!
Renvoie une jonction All avec 8 éléments. Il s'agit d'un moyen de retour plutôt non standard, mais généralement, les jonctions peuvent agir comme des listes ordonnées (au moins jusqu'à ce que la lecture automatique soit implémentée) et il est possible d'extraire les valeurs d'une liste.
Explication:
la source
Japt,
85 octetsL'essayer
Alternative
Suggéré par Oliver pour éviter les
0
s dans la sortie en utilisant l'-mf
indicateur.L'essayer
la source
N&2pU
avec-mf
pour éviter le0
s05AB1E , 9 octets
Essayez-le en ligne!
Ceci est également correct pour 6 octets, mais il ne se termine pas à temps sur TIO pour 86:
05AB1E , 6 octets
Essayez-le en ligne!
la source
15
, au lieu de[1,2,4,8]
2**0
, belle prise.Ý
finiL
.L
au lieu deÝ
d'abord dans ma réponse.Julia 0,6 , 13 octets
Essayez-le en ligne!
la source
CJam , 12 octets
Essayez-le en ligne!
la source
K (oK) ,
1916 octets-3 octets grâce à ngn!
Essayez-le en ligne!
oK n'a pas d'
power
opérateur, c'est pourquoi j'ai besoin d'une fonction d'aide{*/x#2}
(copiez 2x
fois et réduisez la liste résultante par multiplication)la source
{
x}
Alchimiste , 125 octets
Essayez-le en ligne! ou Testez chaque entrée!
Explication
la source
PHP ,
4139 octetsEssayez-le en ligne!
Ou 38 sans
>>=
opérateur amusant et PHP 5.6+:Ou 36 avec sortie little-endian ("0 2 4 0 16 0 64 0"):
Vraiment, je voulais juste utiliser l'
>>=
opérateur, donc je m'en tiens au 39 .Tests:
la source
TSQL,
4339 octetsImpossible de trouver une solution de fantaisie plus courte, alors voici une boucle standard. -4 octets grâce à MickyT et KirillL
Essaye le
la source
,@ int=128s:print @y&@ set @/=2IF @>0GOTO s
. C'est suggéré par @KirillL pour la réponse RPython 2 ,
4340 octetsEssayez-le en ligne!
la source
C # (Visual C # Interactive Compiler), 33 octets
Port de la réponse JavaScript (ES6) de @Arnauld , alors assurez-vous de voter pour lui!
Essayez-le en ligne.
Explication:
la source