jueves, 17 de abril de 2008

MT Divisores multicabezal

Entrada: B$000000000$B
Salida: B$000000000$000101B
Voy a usar 3 cabezales que empezaran en el primer 0, uno recorrera el numero original, el otro los divisores posibles y el ultimo escribira los divisores correctos.

f(q0,0,0,0)=(q0,{0,z},{0,L},{0,R})
f(q0,0,$,0)=(q0,{0,z},{$,L},{0,R})
f(q0,0,B,0)=(q0,{0,z},{B,z},{0,R})
f(q0,0,B,$)=(q0,{0,z},{B,z},{$,R})
f(q0,0,B,B)=(q1,{0,z},{B,z},{B,z})
f(q1,0,B,B)=(q2,{Y,R},{B,z},{B,z})
f(q1,$,B,B)=(q3,{$,L},{B,z},{B,z})
f(q2,0,B,B)=(q1,{Y,R},{0,L},{B,z})
f(q2,$,B,B)=(q3,{$,L},{B,z},{B,z})
f(q3,Y,B,B)=(q3,{0,L},{B,z},{B,z})
f(q3,$,B,B)=(q4,{$,R},{B,R},{B,z})
f(q4,0,0,B)=(q4,{Y,R},{Y,R},{B,z})
f(q4,0,$,B)=(q5,{0,Z},{$,L},{B,z})
f(q4,$,0,B)=(q6,{$,L},{0,L},{B,z})
f(q4,$,$,B)=(q8,{$,z},{$,L},{B,z})
f(q5,0,Y,B)=(q5,{0,z},{0,L},{B,z})
f(q5,0,B,B)=(q4,{0,z},{B,R},{B,z})
f(q6,Y,Y,B)=(q6,{0,L},{0,L},{B,z})
f(q6,Y,B,B)=(q6,{0,L},{B,z},{B,z})
f(q6,$,B,B)=(q7,{$,R},{B,R},{B,z})
f(q7,0,0,B)=(q10,{0,z},{B,R},{B,z})
f(q8,$,Y,B)=(q8,{$,z},{Y,L},{0,R})
f(q8,$,B,B)=(q9,{$,z},{B,R},{1,R})
f(q9,$,Y,B)=(q9,{$,z},{Y,R},{B,z})
f(q9,$,$,B)=(q6,{$,L},{$,L},{B,z})
f(q10,0,$,B)=(q11(final),{0,z},{$,z},{B,z})
f(q10,0,0,B)=(q4,{0,z},{0,z},{B,z})
f(q11)(final)

2 comentarios:

Fluket19 dijo...

He estado corrigiendo esta MT y tengo este problema. Empiezo con la cadena $000000000$ y voy realizando transiciones hasta llegar a : B$000000000$000101B con los cabezales: 1.- en el 0 de mas a la izquierda. 2.- en la B de la izquierda. 3.- en la B de la derecha. Estamos en el estado q5 y al usar la transición q5{0,B,B} pasamos a q4 con el 2º cabezal encima del $ y luego con el estado q4{0,$,B} volvemos a q5 de nuevo con la misma transición. Por lo que nos quedamos en un bucle infinito. Todo lo demás correcto. Mirad a ver si os pasa.

Roberto dijo...

Creo que ya he encontrado el fallo,Cuando llegue a casa lo publicare.
Creo que solo necesitare un estado q11 que me compruebe si he acabado o no ya la caena de divisores.Tenias razon me confundia yo