Skip to content
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

Open
3 tasks done
Minoru opened this issue Jul 21, 2018 · 2 comments
Open
3 tasks done

Микрооптимизации трейсов #6

Minoru opened this issue Jul 21, 2018 · 2 comments

Comments

@Minoru
Copy link
Member

Minoru commented Jul 21, 2018

В трейсах можно исправлять маленькие неэффективности, выражая одни команды через другие. Например:

  • [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]], возвращающую все возможные оптимизации входной цепочки команд. (Дальше будем засовывать в симулятор и оценивать, какая из оптимизаций самая удачная).
@Minoru
Copy link
Member Author

Minoru commented Jul 21, 2018

Закрыто via ed6a1d5.

@Minoru Minoru closed this as completed Jul 21, 2018
@Minoru
Copy link
Member Author

Minoru commented Jul 21, 2018

Открываю обратно, потому что хочу переделать элементарные оптимизации: они должны иметь сигнатуру [Command] -> [[Command]] и возвращать все возможные результаты, которые можно получить за один проход. Например, оптимизация mergeSMoves при входе [SMove X 1, SMove X 3, SMove X 9] возвращать исходную последовательность плюс два вариванта оптимизации:

  • [SMove X 4, SMove X 9] (объединены первые две записи);
  • [SMove X 1, XMove X 12] (объединены последние две записи).

@Minoru Minoru reopened this Jul 21, 2018
@Minoru Minoru removed their assignment Aug 31, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant