FSA: Divisible por tres
Crea una función que compruebe si un número binario es divisible por tres implementando el siguiente autómata finito:

La función debe implementar los siguientes comandos:
0,1➞ El siguiente dígito del número."state"➞ El estado actual del autómata:"S0","S1"o"S2"."stop"➞ Si el autómata acepta o rechaza el número proporcionado. La función debe devolver"accept"o"reject".
Ejemplos
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
- La función debe poder manejar números binarios de longitud arbitraria.
- A la función solo se le proporcionarán entradas válidas.
- La función debe terminar después de un comando
"state"o"stop". - En este caso, la aceptación ocurre si el estado al terminar es
"S0", mientras que el rechazo ocurre si el estado al terminar es"S1"o"S2". - La función int está deshabilitada para evitar la conversión de binario a decimal.