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