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é 2s 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, 201et 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, 29=>1001, 201, 12110=>1010, 210, 202, 1002, 12223=>2111, 1011137=>100101, 20101, 100021, 20021, 12101, 12021, 11221