Сокращение порядковых числительных

an imageПри сокращённой записи порядковых числительных используются сокращения, например, 0-ой, 200-ый,  9873-ий. Окончание определяется цифрами, которые стоят в конце числа.

Требуется сконструировать автомат, который будет распознавать правильные сокращения порядковых числительных, как бы много цифр не содержало число. Это означает, что после ввода правильной записи сокращения порядкового числительного автомат окажется в одном из конечных состояний, а в остальных случаях - в любом промежуточном.

Чем больше записей будет распознаваться правильно, тем лучше. Если автомат распознает любые записи правильно, отделяя правильные от неправильных, то лучшим будет автомат с меньшим числом состояний.

В качестве примера приведён автомат, распознающий правильные сокращения порядковых числительных, состоящие только из нулей и единиц: 0-ой, 100-ый,  1111-ый.

Для конструирования автомата на рабочее поле мышкой вытягиваются состояния - кружки. Кружок в ободке означает конечное состояние. В это состояние автомат должен перейти при вводе правильной строки.

Для соединения состояний переходами щёлкните мышкой на одно из них и потяните за точку, которая появится на "орбите" этого состояния в другое. Над стрелкой перехода появится символ по умолчанию. Чтобы его изменить, нужно щёлкнуть на него мышкой и выбрать другой. Заметьте, что из одного состояния можно перейти в разные состояния, но символы, по которым делается переход, должны быть разными. Обратите внимание на то, что лишний щелчок на состоянии может перевести его в конечное. Если этого не требовалось, щёлкните по нему ещё раз.

Автомат всегда начинает работу из состояния S0.

Для управления автоматом используйте стандартные кнопки проигрывания, находящиеся внизу рабочей области по центру. После проигрывания не забывайте нажимать первую из кнопок (чёрный квадрат) для возвращения автомата в исходное состояние.

Для проверки работы автомата можно задать любую строку символов, нажав символ карандаша около входной строки. Ввод можно осуществлять только когда автомат возвращён в начальное состояние.

Для удаления построенного перехода подведите к нему мышку и, когда появится крестик, сделайте щелчок. Для удаления вершины перетяните её через нижнюю границу рабочего поля.