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