Я самостоятельно изучаю формальные языки (Aho's, Hopcroft), но мне тяжело с регулярными выражениями.
Мне удавалось решать простые задачи, но эта поставила задачу, по крайней мере, для меня. Как решить эту проблему, если вы не можете считать до сих пор, я не привык к этому типу вычислений.
Должно быть какое-то свойство или что-то, что позволило бы мне обобщить ответ настолько, чтобы я мог выразить его как регулярное выражение.
До сих пор я придумал, что возможно, что будет как минимум 2 или 3 случая:
- суммы mod3 = 0, если сумма = 3k
- суммы mod3 = 1, если сумма = 3k + 1
- суммы mod3 = 2, если сумма = 3k + 2.
Но я пришел к выводу, что может произойти множество комбинаций, поэтому сумма не может найти шаблон, которому должно следовать регулярное выражение.
Строка для отл. {122211}0
(фигурные скобки для удобства чтения) имеет ноль в конце, поскольку он удерживает это {sum=3k}0
, если сумма равна "10" из строки для ex. {1222111}1
регистр может быть {sum=3k+1}
, поэтому он должен быть в конце и так далее.
Возможно, это верный путь для решения проблемы, но я открыт для любых предложений, пожалуйста, любая помощь очень ценится.