FSA: Divisível por três
Crie uma função que verifique se um número binário é divisível por três implementando o seguinte autômato finito:

A função deve implementar os seguintes comandos:
0,1➞ O próximo dígito do número."state"➞ O estado atual do autômato:"S0","S1"ou"S2"."stop"➞ Se o autômato aceita ou rejeita o número fornecido. A função deve retornar"accept"ou"reject".
Exemplos
divisible(1)(1)(0)(1)(0)("stop") ➞ "reject"
# 26 is not divisible by 3, and 26 == 0b11010
divisible("state") ➞ "S0"
# The automaton should start at S0
divisible(1)(0)(1)("state") ➞ "S2"Notas
- A função deve ser capaz de lidar com números binários de comprimento arbitrário.
- A função receberá apenas entradas válidas.
- A função deve terminar após um comando
"state"ou"stop". - Neste caso, a aceitação ocorre se o estado no momento do término for
"S0", enquanto a rejeição ocorre se o estado no momento do término for"S1"ou"S2". - A função int está desabilitada para evitar a conversão de binário para decimal.