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.