TRABAJO DE AUTOMATAS Y LENGUAJES FORMALES Integrantes: Carlos Julián Manrique Ortega Luís Fernando Ramírez Silva Cod: 2050222 Cod: 2040086 Ejercicio: en notación base 3 multiplica por 2 la cadena de entrada. Solución: Para el desarrollo del ejercicio, pensamos en usar una maquina que se encargue de duplicar el numero de entrada (dado en base 3)y lo coloque después de dos asteriscos, luego implementamos la maquina multiplicador, que se va a encargar de multiplicar en base 3 toda la cadena de entrada y dar el resultado sobrescrito en la cadena multiplicada. Ejemplo: La cadena de entrada es: 110121 (en base 3) La cadena de salida seria para este caso: 221012 Nuestro programa haría los siguientes pasos: 1ro. Pide el numero de entrada después de un “#” y sabe que termina al encontrar dos “##s” #110121## 2do. Toma ese mismo numero y lo duplica (maquina duplicadora vista en clase) #110121##110121## 3ro. Se para en el tercer “#” y comienza a leer el ultimo numero ingresado, recorre todo el numero y empieza la multiplicación por 2. 4to. Arranca de atrás hacia delante sobrescribiendo el numero que encuentra por la respectiva producto de su multiplicación x2 en base 3. 1. Maquina multiplicador x2: 0/0R 1/1R 2/2R #/# R 0/0L 1/2L #/# L 0/1L 2/1L 1/0L 2/2L #/1L 1.) Inicio. 2.) q0: estado de inicio. 3.) Encuentra # escribe # y se mueve al siguiente numero hacia la derecha. 4.) q1: estado 1, en este estado, si encuentra 0, escribe 0, si encuentra 1, escribe 1, y si encuentra 2, escribe 2 y se mueve a la derecha, o sea recorre todo el numero hasta el final y lo deja tal como esta. 5.) Encuentra # escribe # y se mueve hacia la izquierda. 6.) q2: Estado2, en el caso en el que no lleve nada la multiplicación o sea encuentre un cero, coloca un cero y si encuentra un 1 coloca un 2, que seria el correspondiente producto de multiplicar por 2. 7.) q2: Estado2, en el caso en el que encuentre un 2, ya su resultado seria 4, que en base 3, es 11, entonces coloca 1, y lleva uno. 8.) q3: ciclos repetitivos de cuando lleva uno, para el caso que el siguiente numero que encuentre a la izquierda fuera 1, colocaria 0 ya que 2x1=2+ 1 que llevaba seria 3, que es 10 en base 3, o sea pone cero y lleva 1 (este ciclo se repite hasta encontrar un cero) 9.) q3:cilco repetitivo de cuando lleva uno, ahora que encuetre 2 en el siguiente numero a la izquierda, entonces coloca 2 ya que si encuentra 2, es 2x2 = 4 +1 que llevaba seria 5, que es 12 en base 3, o sea pone el dos y lleva 1 mas (este ciclo se repite hasta encontrar un cero). 10) q3: Ahora encuentra cero (0), coloca por obligación el 1 que llevaba, no puede llevar mas de 1 por consiguiente pone el 1 y regresa al estado q2. 11) q3: en el caso en que encuentre un numeral, se da por terminado el numero, por consiguiente el programa finaliza.