Un bit flotte du LSB au MSB se déplaçant d'une position à chaque fois jusqu'à ce qu'il flotte vers le haut du conteneur:
0000
0001
0010
0100
1000
Une fois qu'un bit flotte vers le haut, un autre bit commence son voyage et s'arrête lorsqu'il rencontre un autre bit:
1001
1010
1100
Cela se produit jusqu'à ce que le conteneur soit rempli de bits:
1101
1110
1111
Défi
Étant donné un nombre entier, sortez la " séquence flottante de bits " pour un conteneur de ce nombre de bits.
- Chaque terme de la séquence peut être séparé par n'importe quel séparateur de votre choix.
- Modifier : séquence doit être affichée en tant que nombres entiers décimal, en commençant par le premier therm:
0
. - La taille du conteneur doit être supérieure à zéro et jusqu'au nombre de bits du plus grand entier pris en charge par la langue de votre choix. Vous pouvez supposer que l'entrée correspond toujours à cette exigence.
Exemples
Seule la séquence numérique est requise, la représentation binaire est montrée comme exemple:
Pour 1 :
0 1
0 -> 0 1 -> 1
Pour 3 :
0 1 2 4 5 6 7
000 -> 0 001 -> 1 010 -> 2 100 -> 4 101 -> 5 110 -> 6 111 -> 7
Pour 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
Pour 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]
Réponses:
05AB1E , 10 octets
Essayez-le en ligne!
la source
.0
par défaut pour les entiers, mais pas sûr. Personnellement, je mets généralementï
le pied de page en jolie impression et ne l'inclue pas dans le nombre d'octets.Python 2 , 45 octets
Essayez-le en ligne!
Il s'avère plus court pour générer
2**n
moins chaque terme dans la séquence d'entréen
. Si nous regardons leur expansion binaire, ci-dessous pourn=5
, nous voyons un joli motif de triangles de 1 dans les extensions binaires.Chaque nombre est obtenu à partir du précédent en supprimant le plus à droite dans l'expansion binaire, sauf si cela ferait le nombre 0, nous soustrayons 1 à la place, créant un nouveau bloc de 1 qui commence un nouveau triangle plus petit. Ceci est implémenté comme
y=y&y-1or~-y
, oùy&y-1
est un petit truc pour supprimer le 1 le plus à droite, etor~-y
donne à lay-1
place si cette valeur était 0.Python 2 , 49 octets
Essayez-le en ligne!
Une fonction qui s'imprime, se terminant par une erreur. Le programme plus agréable ci-dessous s'est avéré plus long.
51 octets
Essayez-le en ligne!
la source
Gelée ,
1110 octetsPort de @Grimy réponse 05AB1E de , alors assurez - vous de le upvote!
-1 octet grâce à @Grimy .
Essayez-le en ligne.
Explication:
la source
R_2
->Ḷ’
pour -1.Ḷ
est la seule gamme sensée , je souhaite vraiment que 05AB1E ait un seul octet pour cela.Perl 5 (
-n
),4140 octets-1 octet à Xcali
TIO
"{0,1}"x$_
: la chaîne"{0,1}"
répétée n fois"0b".
: concaténer à"0b"
glob
: expansion globale (produit cartésien)map{
...}
: pour chaque élément/01.*1/||
: sauter quand01
suivi de quelque chose1
say oct
: pour convertir en décimal et direla source
JavaScript (ES6), 43 octets
En cas de doute, utilisez la méthode xnor .
Essayez-le en ligne!
JavaScript (ES6),
59 57 5552 octetsEssayez-le en ligne!
Comment?
Commenté
la source
Python 2 ,
9576 octetsEssayez-le en ligne!
la source
Perl 6 , 43 octets
Essayez-le en ligne!
Bloc de code anonyme qui prend un nombre et génère la séquence séparée par des retours à la ligne. Cela fonctionne en commençant par 0 répété n fois, puis en remplaçant soit
01
par10
ou le dernier0
par a1
jusqu'à ce que le nombre soit juste un.Ou 40 octets, selon l'approche de Nahuel Fouilleul
Essayez-le en ligne!
la source
01
par10
ou le dernier0
par un1
jusqu'à ce que le nombre soit juste " C'est un coup de génie!Python 2 , 60 octets
Essayez-le en ligne!
Python 3 , 76 octets
Essayez-le en ligne!
la source
Python 2 , 67 octets
Essayez-le en ligne!
la source
Python 3 , 62 octets
Essayez-le en ligne!
L'idée est plus ou moins la même que la solution de @ Arnauld .
Une autre solution de 65 octets:
Essayez-le en ligne!
la source
Gelée , 12 octets
Essayez-le en ligne!
la source
05AB1E ,
1312 octets-1 octet grâce à @Grimy ( également un œil à son approche plus courte ici).
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
oL<ʒbIj1Û1¢2‹
. Il ne semble pas que je puisse le faire baisser.oL<ʒbIj1ÛSO2‹
et essayais de voir où était mon erreur. :) Mais je suis heureux de voir que vous n'êtes pas en mesure de trouver une version plus courte pour l'une de mes réponses pour un changement. ; p (inb4 vous en trouvez un plus court après tout xD)SO2‹
peut être en quelque sorte 3 octets, mais je ne le vois pas et je ne suis pas tout à fait sûr. Il existe des alternatives, commeSO1~
ouSÆ>d
, mais je ne trouve pas de 3 octets.SO!
. Je suis sûr que j'ai d'anciennes réponses à utiliser2‹
qui pourraient également en bénéficier.Rétine , 26 octets
Essayez-le en ligne! Sorties en binaire. Si ce n'est pas acceptable, alors pour 39 octets:
Essayez-le en ligne! Explication:
Convertissez l'entrée en une chaîne de
n
zéros.Correspond à toutes les sous-chaînes non vides possibles.
Pour chaque sous-chaîne, sortez: le préfixe avec
0
s changé en1
s; le suffixe; la correspondance avec l'initiale a été0
remplacée par1
.Convertissez du binaire en décimal.
la source
Brachylog , 27 octets
Essayez-le en ligne!
Sorties hors service et avec doublons. Si ce n'est pas correct, virez
do
à la fin.la source
Fusain , 19 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
Perl 5 , 40 octets
Essayez-le en ligne!
la source
Rétine , 24 octets
Sorties en binaire. L'entrée doit avoir une nouvelle ligne de fin.
Tentative d'explication:
J'ai essayé d'éviter les 3 octets de long
/0/
option regex en réorganisant les options, mais pas pu.Essayez-le en ligne!
la source
C (clang) , 73 octets
Essayez-le en ligne!
la source
k4,
2824 octets@ L'approche de Grimy portée à k4
edit: -4 grâce à ngn!
la source
!:'1+|!:
->|,\!:
xexp
|,\!:
semble si évident maintenant que je le vois!