-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Микрооптимизации трейсов #6
Comments
Minoru
added a commit
that referenced
this issue
Jul 21, 2018
Minoru
added a commit
that referenced
this issue
Jul 21, 2018
Minoru
added a commit
that referenced
this issue
Jul 21, 2018
Закрыто via ed6a1d5. |
Открываю обратно, потому что хочу переделать элементарные оптимизации: они должны иметь сигнатуру
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
В трейсах можно исправлять маленькие неэффективности, выражая одни команды через другие. Например:
[LMove a b, Wait]
или[Wait, LMove a b]
можно превратить в[SMove a, SMove b]
. Экономим 4 единицы энергии;[SMove a, Smove b]
, где a и b находятся на одной оси, можно превратить в[Smove x']
, где x' = a>b? a-b : b-a (очевидное: не нужно куда-то лететь только для того, чтобы опять вернуться). Экономим 2*mlen(min(a, b)) единиц энергии плюс один ход (т.е. ещё 3*R³ или 30*R³ единиц энергии).[SMove a, SMove b]
⇒[]
если abs(a + b) == 0.Тестировать это можно на дефолтных трейсах, пока не готов простой солвер.
По результатам надо:
[Command] -> [[Command]]
, возвращающую все возможные оптимизации входной цепочки команд. (Дальше будем засовывать в симулятор и оценивать, какая из оптимизаций самая удачная).The text was updated successfully, but these errors were encountered: