Я самостоятельно изучаю регулярные выражения и нашел в Интернете интересную практическую задачу, которая включает в себя написание регулярного выражения для распознавания всех двоичных чисел, делящихся на 3 (и только таких чисел). Честно говоря, проблема заключалась в том, чтобы построить DFA для такого сценария, но я подумал, что это должно быть эквивалентно возможно с использованием регулярных выражений.
Я знаю, что есть небольшое правило, позволяющее определить, делится ли двоичное число на 3: возьмите количество единиц, стоящих на четных местах в цифре, и вычтите из нее количество единиц, стоящих на нечетных местах в цифре — если оно равно нулю. , число делится на 3 (пример: 110 - 1 в четном 2-м слоте и 1 в нечетном 1-м слоте). Однако у меня возникли проблемы с адаптацией этого к регулярному выражению.
Самое близкое, к чему я пришел, это осознание того, что число может быть 0, так что это будет первое состояние. Я также видел, что все двоичные числа, делящиеся на 3, начинаются с 1, так что это будет второе состояние, но я застрял там. Может ли кто-нибудь помочь?