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