Com base na notação "binária, mas com dois" mencionada neste vídeo numérico , escreva uma função que aceite um único número como entrada e produza todas as variações desse número em um sistema "binário", onde dois são permitidos.
Regras
- O código deve ser apenas uma função / método, não um programa completo
- Entrada é um número inteiro passado como único parâmetro para a função
- Saída é todas as variações válidas do número de entrada convertido para a notação "binária, mas com dois"
- Saída é o valor de retorno da função, mas pode estar em qualquer formato que seja conveniente, desde que seja óbvio (por exemplo, 3 polegadas, 3 cordas, string delimitada por vírgula / espaço, matriz de entradas, etc.), a ordem não é importante
- No caso improvável de um idioma conter uma função interna para obter o resultado, não é permitido
- O código mais curto em bytes é o vencedor
Explicação da saída
Por exemplo, se você passou o número 9, pode convertê-lo em binário como 1001, mas se você permitir 2s em cada posição, também poderá escrevê-lo como 201(ie 2*4 + 0*2 + 1*1) ou 121(ie 1*4 + 2*2 + 1*1), conforme mostrado nesta tabela:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Então, se aprovada 9, sua função seria necessário para retornar os três números, 1001, 201e 121.
Formato e ordem são irrelevantes, contanto que é óbvio (ou seja [121,201,1001], "0201 0121 1001", ("1001","121","201")são resultados válidos quando dado uma entrada de 9).
Exemplos
2=>10, 29=>1001, 201, 12110=>1010, 210, 202, 1002, 12223=>2111, 1011137=>100101, 20101, 100021, 20021, 12101, 12021, 11221