Contribution:
Nous prenons deux entrées:
- Une entrée
b
avec deux valeurs distinctes:Left
etRight
. † - Et un entier positif
n
.
Production:
Sur la base de l'entrée gauche / droite, nous générons l'une des deux séquences suivantes dans la plage de 1-n
(dans les séquences ci-dessous, les 125 premiers éléments sont affichés):
Left:
1, 6, 7, 56, 57, 62, 63, 960, 961, 966, 967, 1016, 1017, 1022, 1023, 31744, 31745, 31750, 31751, 31800, 31801, 31806, 31807, 32704, 32705, 32710, 32711, 32760, 32761, 32766, 32767, 2064384, 2064385, 2064390, 2064391, 2064440, 2064441, 2064446, 2064447, 2065344, 2065345, 2065350, 2065351, 2065400, 2065401, 2065406, 2065407, 2096128, 2096129, 2096134, 2096135, 2096184, 2096185, 2096190, 2096191, 2097088, 2097089, 2097094, 2097095, 2097144, 2097145, 2097150, 2097151, 266338304, 266338305, 266338310, 266338311, 266338360, 266338361, 266338366, 266338367, 266339264, 266339265, 266339270, 266339271, 266339320, 266339321, 266339326, 266339327, 266370048, 266370049, 266370054, 266370055, 266370104, 266370105, 266370110, 266370111, 266371008, 266371009, 266371014, 266371015, 266371064, 266371065, 266371070, 266371071, 268402688, 268402689, 268402694, 268402695, 268402744, 268402745, 268402750, 268402751, 268403648, 268403649, 268403654, 268403655, 268403704, 268403705, 268403710, 268403711, 268434432, 268434433, 268434438, 268434439, 268434488, 268434489, 268434494, 268434495, 268435392, 268435393, 268435398, 268435399, 268435448, 268435449
Right:
1, 4, 7, 32, 39, 56, 63, 512, 527, 624, 639, 896, 911, 1008, 1023, 16384, 16415, 16864, 16895, 19968, 19999, 20448, 20479, 28672, 28703, 29152, 29183, 32256, 32287, 32736, 32767, 1048576, 1048639, 1050560, 1050623, 1079296, 1079359, 1081280, 1081343, 1277952, 1278015, 1279936, 1279999, 1308672, 1308735, 1310656, 1310719, 1835008, 1835071, 1836992, 1837055, 1865728, 1865791, 1867712, 1867775, 2064384, 2064447, 2066368, 2066431, 2095104, 2095167, 2097088, 2097151, 134217728, 134217855, 134225792, 134225919, 134471680, 134471807, 134479744, 134479871, 138149888, 138150015, 138157952, 138158079, 138403840, 138403967, 138411904, 138412031, 163577856, 163577983, 163585920, 163586047, 163831808, 163831935, 163839872, 163839999, 167510016, 167510143, 167518080, 167518207, 167763968, 167764095, 167772032, 167772159, 234881024, 234881151, 234889088, 234889215, 235134976, 235135103, 235143040, 235143167, 238813184, 238813311, 238821248, 238821375, 239067136, 239067263, 239075200, 239075327, 264241152, 264241279, 264249216, 264249343, 264495104, 264495231, 264503168, 264503295, 268173312, 268173439, 268181376, 268181503, 268427264, 268427391
Comment ces séquences sont-elles générées, demandez-vous?
Une séquence par défaut de 1 à n=10
serait:
As integer:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
As binary:
1 10 11 100 101 110 111 1000 1001 1010
Lorsque nous nous étendons à gauche, le binaire deviendra ceci:
1, 110, 111, 111000, 111001, 111110, 111111, 1111000000, 1111000001, 1111000110
Pourquoi? Le dernier bit est utilisé une fois; le dernier est utilisé deux fois; l'avant-dernier est utilisé trois fois; etc.
So `1010` will become (spaces added as clarification): `1111 000 11 0`
Et ces nouvelles chaînes binaires étirées à gauche sont reconverties en entiers:
1, 6, 7, 56, 57, 62, 63, 960, 961, 966
Quant à l'étiré à droite, le premier bit est utilisé une fois; deuxième deux fois; troisième trois fois; etc. Comme ceci:
As binary:
1, 100, 111, 100000, 100111, 111000, 111111, 1000000000, 1000001111, 1001110000
As integer:
1, 4, 7, 32, 39, 56, 63, 512, 527, 624
Règles du défi:
- † Vous pouvez prendre deux valeurs distinctes, mais indiquez celle que vous utilisez. Il peut donc être
1/0
,true/false
,null/undefined
,"left"/"right"
, etc. n
est toujours supérieur à 0.- Vous devez prendre en charge une sortie maximale d'au moins l'entier par défaut de votre langue (qui est de 32 bits pour la plupart des langues).
- Le format de sortie est flexible. Peut être imprimé ou retourné sous forme de tableau / liste. Peut être avec un espace, une virgule, un tuyau et similaire comme délimiteur. Ton appel. (Encore une fois, veuillez indiquer ce que vous avez utilisé.)
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
n < 128
, afin que les résultats tiennent dans des entiers 32 bits?