FSA: Instruções individuais

Crie uma função que, ao receber uma lista de instruções individuais de um autômato finito, gere um FSA no formato descrito neste desafio. Cada instrução será uma lista de três elementos: O primeiro elemento será o estado atual, o segundo elemento será a entrada à qual a instrução se refere e o terceiro elemento será o novo estado.

Por exemplo, a instrução ["S0", 1, "S1"] indica que, se o estado atual for "S0", ao receber 1 como entrada, o novo estado será "S1". Uma decomposição do FSA deste desafio pode ser vista abaixo:

Exemplos

divisible = [
  ["S0", 0, "S0"], ["S0", 1, "S1"],
  ["S1", 0, "S2"], ["S1", 1, "S0"],
  ["S2", 0, "S1"], ["S2", 1, "S2"]
]

combine(divisible) ➞ {
  "S0": ["S0", "S1"],
  "S1": ["S2", "S0"],
  "S2": ["S1", "S2"]
}

Observações

  • Todo FSA usará um alfabeto binário.
  • Todos os estados terão o formato Sn, onde n é um número inteiro, por exemplo, S2.