Основной принцип такой, что сперва надо составить список всех возможных ударов определённой длины. Потом исключить те варианты, которые содержат ранее найденные удары, как часть себя.
Получившийся список можно проверить, но он будет очень длинным.
Дальше можно воспользоваться тем, что конец одной комбинации может быть началом следующей.
Таким образом можно склеить много вариантов в одну длинную последовательность. А потом её отрабатывать в боях. За один бой таким образом можно проверить много вариантов. Главное, чётко представить, какие комбинации уже проверились в бою, а какие ещё нет.
Собственно, программы так и делают. Правда те, которые мне попадаются не выдают действительно оптимальной последовательности, но лучше, чем ручками склеивать и отслеживать.
P.S. А ещё можно книжку на аукционе найти. Тогда удар сразу откроется и подбирать не надо.
Книжку можно ещё из тренера выколотить... Теоретически...