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 2
s 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
, 201
e 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, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221