FSA: Instrucciones individuales

Crea una función que, al recibir una lista de instrucciones individuales de un autómata finito, genere un FSA en la forma descrita en este desafío. Cada instrucción será una lista de tres elementos: El primer elemento será el estado actual, el segundo elemento será la entrada a la que corresponde la instrucción y el tercer elemento será el nuevo estado.

Por ejemplo, la instrucción ["S0", 1, "S1"] indica que, si el estado actual es "S0", al recibir un 1 como entrada, el nuevo estado será "S1". Una descomposición del FSA de este desafío puede verse abajo:

Ejemplos

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"]
}

Notas

  • Todo FSA usará un alfabeto binario.
  • Todos los estados tendrán la forma Sn, donde n es un entero, p. ej., S2.