Sur la base de la notation "binaire, mais avec deux" mentionnée dans cette vidéo numérique , écrivez une fonction qui prend un seul numéro en entrée et génère toutes les variations de ce nombre dans un système "binaire" où les deux sont autorisés.
Règles
- Le code ne doit être qu'une fonction / méthode, pas un programme complet
- L'entrée est un entier transmis comme seul paramètre à la fonction
- La sortie est toutes les variations valides du nombre d'entrée converties en notation "binaire, mais avec deux"
- La sortie est la valeur de retour de la fonction, mais peut être dans n'importe quel format qui convient à condition qu'elle soit évidente (par exemple, 3 ints, 3 chaînes, chaîne délimitée par des virgules / espaces, tableau d'ints, etc.), l'ordre est sans importance
- Dans le cas peu probable où une langue contiendrait une fonction intégrée pour obtenir le résultat, elle est interdite
- Le code le plus court en octets est le gagnant
Explication de la sortie
Par exemple, si vous passez le nombre 9
, vous pouvez le convertir en binaire en tant que 1001
, mais si vous avez autorisé 2
s dans chaque position, vous pouvez également l'écrire comme 201
(ie 2*4 + 0*2 + 1*1
), ou 121
(ie 1*4 + 2*2 + 1*1
), comme indiqué dans ce tableau:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Donc, si elle est réussie 9
, votre fonction devra renvoyer les trois nombres 1001
, 201
et 121
.
Le format et l'ordre ne sont pas pertinents, tant qu'ils sont évidents (c. [121,201,1001]
-à- d . "0201 0121 1001"
, ("1001","121","201")
Sont des résultats valides lorsqu'ils reçoivent une entrée 9
)
Exemples
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221