Mostrando entradas con la etiqueta divisores. Mostrar todas las entradas
Mostrando entradas con la etiqueta divisores. Mostrar todas las entradas

domingo, 13 de abril de 2008

MT divisores (Multicinta)

Esta M.T. calcula los divisores de un número. La diferencia con la anterior es que esta M.T. es multicinta. Usa 3 cintas, guardando en la primera el número, en la segunda los candidatos a divisores desde n/2 y en la tercera los que son divisores. El alfabeto usado sigue siendo {0,1,B}.

Formato de entrada: B000000000B (cinta 1)
Formato de salida   : B00010B  (cinta 3)

Y la definición queda así:


M.T. para calcular los divisores (OK)

Esta es la buena. Para solucionar el problema que teníamos de la cantidad de estados de la M.T. se ha programado un pequeño script en perl para simular máquinas de Turing simples. Hemos cambiado los formatos de entrada y salida de acuerdo a lo que se pedía y el resultado parece hacer sido satisfactorio. El alfabeto se mantiene el mismo {0,1,B} y ahora los 0's se toman como indicadores del número y los 1's como separadores:

Formato de entrada: B000000000B
Formato de salida   : B00010B

Por cierto, la otra M.T. definitivamente estaba mal, pero la dejo por si tenéis curiosidad por saber en que fallaba. Así ha quedado esta nueva versión:


martes, 8 de abril de 2008

M.T. para calcular los divisores

Esta M.T. la hemos realizado al igual que las anteriores con un alfabeto {0,1,B}. Ha llegado un momento en que la cantidad de estados nos superaban, así que la vamos a dejar a modo de curiosidad y teniendo en cuenta que ni siquiera está repasada para ver si funciona bien en todos los casos. Así que si os da por comprobarla, ¡informad de fallos y se os agradecerá!.

Formato de entrada: B111111111B
Formato de salida:     B11101B

El 0 se usa de separador y el 1 para marcar los números. La B además se usa para marcar pares (Glub!).