Ostatnio napisałem na pytanie o grach Diffy który upadł bez odpowiedzi. To dobrze, pytanie jest naprawdę trudne, ale chciałbym zadać łatwiejsze pytanie na temat gier Diffy, abyśmy mogli uruchomić piłkę.
Jak działa Diffy
Skopiowano z Find Diffy Games
Gra Diffy działa w następujący sposób: Zaczynasz od listy liczb całkowitych nieujemnych, w tym przykładzie użyjemy
3 4 5 8
Następnie bierzesz absolutną różnicę między sąsiednimi liczbami
(8) 3 4 5 8
5 1 1 3
Potem powtarzasz. Powtarzaj, dopóki nie uświadomisz sobie, że wszedłeś w pętlę. A potem ogólnie gra zaczyna się od nowa.
3 4 5 8
5 1 1 3
2 4 0 2
0 2 4 2
2 2 2 2
0 0 0 0
0 0 0 0
Większość gier kończy się ciągiem zer zerowych, co uznaje się za stan utraty, ale kilka rzadkich gier utknie w większych pętlach.
Zadanie
Biorąc pod uwagę stan początkowy gry Diffy, określ, czy gra ostatecznie osiąga stan wszystkich zer. Powinieneś wypisać wartość Prawdy lub Falsy dla każdego z dwóch stanów. Który odpowiada, co nie ma znaczenia.
Celem jest zminimalizowanie liczby bajtów w źródle.
1 1 0
jest okresowy, podobnie jak 42 42 41
taki stan.
n
jest nieparzysta, gra nie osiąga zera, chyba że wszystkie liczby są równe. Jeśli długość jest potęgą 2, zawsze spada do zera.
n
elementami i maksimum m
zajmuje co najwyżej n * bit_length(m)
kroki. Jest więc n*m
również górną granicą. Silniejszą górną granicą jest t(n) * bit_length(m)
, gdzie t(n)
jest największa moc 2, która jest czynnikiem n
.