FSA: Criando máquinas

Crie um autômato finito que determine se um número binário é divisível por cinco. O autômato finito deste desafio pode ser construído da seguinte forma:

Exemplo de AFD

divisible = {
  "S0": ["S0", "S1"],
  "S1": ["S2", "S0"],
  "S2": ["S1", "S2"]
}

Cada chave é um estado, e cada valor indica as instruções para cada tipo de entrada. Para "S0", o array ["S0", "S1"] indica que, se um 0 for recebido, o novo estado será "S0". Se um 1 for recebido, o novo estado será "S1".

Observações

  • Lembre-se de criar um dicionário, não uma função.
  • Neste caso, "accept" significaria que o número é divisível por cinco, enquanto "reject" significa que não é.
  • Os estados inicial e de aceitação devem ser ambos "S0".
  • O autômato deve ler os dígitos de um número binário da esquerda para a direita. Por exemplo, o primeiro dígito de 26 (0b11010) seria 1, pois ignoramos o 0b.