Basado en la notación "binaria, pero con dos" mencionada en este video de número numérico , escriba una función que tome un solo número como entrada y genere todas las variaciones de ese número en un sistema "binario" donde se permiten dos.
Reglas
- El código solo debe ser una función / método, no un programa completo
- La entrada es un número entero pasado como el único parámetro para la función
- La salida es todas las variaciones válidas del número de entrada convertido a notación "binaria, pero con dos"
- La salida es el valor de retorno de la función, pero puede estar en cualquier formato que sea conveniente siempre que sea obvio (por ejemplo, 3 ints, 3 cadenas, cadena delimitada por comas / espacios, matriz de entradas, etc.), el orden no es importante
- En el caso improbable de que un idioma contenga una función incorporada para lograr el resultado, no se permite
- El código más corto en bytes es el ganador
Explicación de la salida.
Por ejemplo, si se le pasa el número 9
, puede convertirlo en binario como 1001
, pero si permitió 2
s en cada posición, también podría escribirlo como 201
(es decir 2*4 + 0*2 + 1*1
) o 121
(es decir 1*4 + 2*2 + 1*1
), como se muestra en esta tabla:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Entonces, si se aprueba 9
, su función necesitaría devolver los tres números 1001
, 201
y 121
.
Formato y el orden son irrelevantes, tanto tiempo como es obvio (es decir [121,201,1001]
, "0201 0121 1001"
, ("1001","121","201")
son resultados válidos cuando dada una entrada de 9
).
Ejemplos
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221