Zwykle rozkładamy liczbę na cyfry binarne, przypisując jej potęgę 2, o współczynniku
0
lub1
dla każdego terminu:
25 = 1*16 + 1*8 + 0*4 + 0*2 + 1*1
Wybór
0
i1
... nie jest bardzo binarny. Dokonamy prawdziwej ekspansji binarnej poprzez rozszerzenie o potęgach 2, ale o współczynniku1
lub-1
zamiast tego:
25 = 1*16 + 1*8 + 1*4 - 1*2 - 1*1
Teraz wygląda to na binarne.
Biorąc pod uwagę dowolną liczbę dodatnią, stwierdzenie, że:
- Każda liczba nieparzysta ma nieskończenie wiele prawdziwych rozszerzeń binarnych
- Każda liczba parzysta nie ma prawdziwych rozszerzeń binarnych
Dlatego, aby prawdziwa interpretacja binarna była dobrze zdefiniowana, wymagamy, aby była ona najmniejsza , tj. Najkrótsza.
Biorąc pod uwagę każdą dodatnią, nieparzystą liczbę całkowitą n
, zwróć jej prawdziwe rozwinięcie binarne, od najbardziej znaczącej cyfry do najmniej znaczącej cyfry (lub w odwrotnej kolejności).
Zasady:
- Jak to jest golf-golf, powinieneś dążyć do tego, aby uzyskać jak najkrótszą liczbę bajtów. Wbudowane są dozwolone.
- Dowolne dane wyjściowe, które mogą przedstawiać i wyświetlać współczynniki, są dopuszczalne: tablica, ciąg współczynników z separatorami itp.
- Obowiązują standardowe luki w grze w golfa.
- Twój program powinien działać dla wartości w standardowym rozmiarze całkowitym twojego języka.
Przypadki testowe
25 -> [1,1,1,-1,-1]
47 -> [1,1,-1,1,1,1]
1 -> [1]
3 -> [1,1]
1234567 -> [1,1,-1,-1,1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,1]
0
zamiast stanu -1
niskiego napięcia. Dzwoniący odbierający bity wie, co mają na myśli. (To wciąż nie jest trywialne ćwiczenie polegające na manipulowaniu bitami, ponieważ obrót w prawo działa tylko wtedy, gdy ma 32 znaczące bity. Np. Liczba 5-bitowa wymaga szerokości obrotu 5).
111-1-1
ważne jest wyjście dla 25
?