Sulla base della notazione "binaria, ma con due" menzionata in questo video file numerico , scrivere una funzione che accetta un singolo numero come input e genera tutte le variazioni di quel numero in un sistema "binario" in cui sono consentiti due.
Regole
- Il codice deve essere solo una funzione / metodo, non un programma completo
- L'input è un numero intero passato come unico parametro alla funzione
- L'output è tutte le variazioni valide del numero di input convertito in notazione "binaria, ma con due"
- L'output è il valore restituito della funzione, ma può essere in qualsiasi formato sia conveniente finché è ovvio (ad es. 3 ints, 3 stringhe, stringa delimitata da virgola / spazio, array di ints, ecc.), L'ordine non è importante
- Nel caso improbabile che una lingua contenga una funzione integrata per ottenere il risultato, non è consentita
- Il codice più breve in byte è il vincitore
Spiegazione dell'output
Ad esempio, se ti viene passato il numero 9
, puoi convertirlo in binario come 1001
, ma se hai permesso 2
s in ogni posizione, puoi anche scriverlo come 201
(ie 2*4 + 0*2 + 1*1
) o 121
(ie 1*4 + 2*2 + 1*1
), come mostrato in questa tabella:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Quindi, se approvata 9
, la funzione avrebbe bisogno di restituire i tre numeri, 1001
, 201
e 121
.
Formato e ordine sono irrilevanti, purché sia ovvio (cioè [121,201,1001]
, "0201 0121 1001"
, ("1001","121","201")
sono risultati validi quando dato un ingresso 9
).
Esempi
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221