Flip of Time
Klepsydra jest podana jako tablica krotka (upper, lower) dla liczby minut piasku, które są obecnie przechowywane w jej górnej i dolnej komorze, obie komory są wystarczająco duże, aby pomieścić cały piasek w tej klepsydrze. Tak więc po upływie m minut stan tej konkretnej klepsydry będzie wynosił upper - min(upper, m), lower + min(upper, m). Całkowita ilość piasku wewnątrz klepsydry nigdy się nie zmieni, ani żadna z komór nigdy nie będzie zawierać ujemnego anty-piasku.
Biorąc pod uwagę listę glasses, zadaniem gracza jest znalezienie optymalnej sekwencji ruchów, która pozwoli odmierzyć dokładnie t minut, liczonych jako liczba wykonanych po drodze przesunięć klepsydry. Każdy ruch składa się z dwóch etapów:
- najpierw należy poczekać, aż klepsydra, w której aktualnie znajduje się najmniejsza niezerowa m ilość piasku w górnej komorze, wyczerpie się.
- gdy to nastąpi, należy wybrać dowolny podzbiór glasses i natychmiast odwrócić wybrany podzbiór.
Proszę spojrzeć na przykład dla [(7, 0), (11, 0)], 15 przypadku. Wyjaśnienie nieco zmienionego przypadku można znaleźć na stronie Popular Mechanics article.
W pierwszym etapie nie ma Pan wyboru co do czekania, ale w drugim etapie cieszy się Pan bogactwem 2n - 1 możliwych ruchów dla okularów n!
Funkcja ta powinna...