Opierając się na zapisie „binarnym, ale z dwójkami” wspomnianym w tym filmie liczbowym , napisz funkcję, która pobiera pojedynczą liczbę jako dane wejściowe i wyprowadza wszystkie odmiany tej liczby w systemie „binarnym”, w którym dozwolone są dwójki.
Zasady
- Kod musi być tylko funkcją / metodą, a nie pełnym programem
- Dane wejściowe to liczba całkowita przekazywana jako jedyny parametr do funkcji
- Dane wyjściowe to wszystkie poprawne odmiany liczby wejściowej przekonwertowane na notację „dwójkową, ale dwójkową”
- Dane wyjściowe są wartością zwracaną przez funkcję, ale mogą być w dowolnym dogodnym formacie, o ile jest to oczywiste (np. 3 liczby całkowite, 3 ciągi, łańcuch rozdzielany przecinkami / spacjami, tablica liczb całkowitych itp.), Kolejność jest nieistotna
- W mało prawdopodobnym przypadku, gdy język zawiera wbudowaną funkcję umożliwiającą osiągnięcie wyniku, jest on niedozwolony
- Zwycięża najkrótszy kod w bajtach
Objaśnienie danych wyjściowych
Na przykład, jeśli otrzymałeś numer 9
, możesz przekonwertować go na binarny jako 1001
, ale jeśli zezwoliłeś 2
s na każdej pozycji, możesz również zapisać go jako 201
(tj. 2*4 + 0*2 + 1*1
) Lub 121
(tj. 1*4 + 2*2 + 1*1
), Jak pokazano w tej tabeli:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
Tak więc, jeśli przejdzie 9
, twoja funkcja będzie musiała zwrócić trzy liczby 1001
, 201
i 121
.
Format i porządek są bez znaczenia, tak długo, jak to jest oczywiste (czyli [121,201,1001]
, "0201 0121 1001"
, ("1001","121","201")
są ważne wyniki, gdy otrzyma na wejście 9
).
Przykłady
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221