Documentos de Académico
Documentos de Profesional
Documentos de Cultura
III
Universidad Mayor de San Andrés
Facultad de ingeniería
Ingeniería electrónica
PROYECTO FINAL
TRES EN RAYA MAESTRO
Asignatura: SISTEMAS DIGITALES II
Estudiantes: Univ. Espino Marca Mary Isabel
Univ. Jurado Morales Alejandro Javier
Univ. Ramos Queso Edith Elvira
Docente: Ing. Jorge León
2. OBJETIVOS
a. Objetivo general
Realizar el diseño y la implementación del juego “tres en raya” bajo el
enfoque del lenguaje de descripción de hardware AHPL
b. Objetivos específicos
Diseñar el circuito de control basado en la microprogramación/firmware
Describir el funcionamiento mediante diseño Hardware de AHPL
Analizar el funcionamiento optimo del circuito, mediante un diagrama de
tiempos.
Aplicar conocimientos adquiridos en la formación, para optimizar el
circuito a realizar.
Realizar una interacción con el proyecto “tres en raya maestro -
aprendiz”
3. JUSTIFICACIÓN
Durante el desarrollo de contenidos teóricos e implementación de las prácticas de
laboratorio, se pudo apreciar de manera amplia la aplicabilidad de los conocimientos
adquiridos, pues un claro ejemplo de ello es el juego tres en raya, ya que esta se basa en una
lógica de juego entre dos jugadores, misma que para lograr una victoria se debe completar
una fila, columna o diagonal de tres lugares elegidos.
Basados en lo anterior, en este proyecto implementaremos el juego tres en raya “maestro”,
mediante Hardware, ya que es un proyecto que responde adecuadamente a las exigencias de
la materia, pues en su desarrollo aplicaremos casi todo el conocimiento desarrollado en la
materia, siendo a la par, una oportunidad de resolver algunas dudas o cuestiones que se
generan naturalmente durante el desarrollo de las prácticas de laboratorio.
Pues en el desarrollo aplicaremos la trasferencia de datos, microprogramación de circuitos
de control mediante firmware, direccionamiento de datos en una memoria, identificación e
implementación adecuada, según se requiera, de buses de transferencia, uso adecuado de la
programación AHPL, etc.
4. MARCO TEÓRICO
a. TRES EN RAYA
Objetivo del Juego: Conseguir colocar sus tres fichas formando una línea antes de que lo
consiga el adversario y de esta manera ganar la partida.
Reglas: El juego de “tres en raya” se juega con dos participantes y un tablero con celdas de
3x3 que se encuentran inicialmente vacías. Un jugador es “X” y el otro es “O”. Los
jugadores se alternan para colocar sus marcas en una celda vacía; “X” empieza primero.
Los jugadores tienen que ir colocando sus fichas siguiendo algún tipo de estrategia, la cual
le lleve a colocar sus tres fichas formando una línea antes que su adversario, ganando de
esta manera la partida. Aunque primero en jugar tiene una ligera ventaja, se puede
demostrar que un juego entre dos contendientes inteligentes siempre terminara en un
empate.
Para el análisis del juego “Tres en raya” tendremos a dos jugadores, uno denominado
máquina y otro denominado humano; en donde el jugador maquina (que será el jugador que
automatizaremos) tendrá un determinado comportamiento según la jugada que pueda
realizar el humano.
Se definirá el juego formalmente como una clase de problema de búsqueda, en donde el
elemento buscado será el movimiento más óptimo que se pueda realizar en un determinado
turno.
Hay que entender que lo que implementaremos serán las jugadas optimas de la máquina
como respuesta a las jugadas del humano, es de esa manera que antes analizaremos cuáles
son esas respuestas y luego pasaremos a implementarlas.
Viendo un análisis de las posibilidades entre ganar, perder y empatar respecto de las
jugadas que realizara el humano podemos observar que habrán 9*8*7*6*5*4*3*2*1=
362880 posibilidades de juego ósea que seria 9! Y por ello es demasiado largo y
sumamente estresante realizar todas las posibilidades, por lo tanto, reduciremos las
posibilidades de la maquina solo para que empate o pueda ganar. Para ello aplicaremos el
método o procedimiento MiniMax, Max será determinado como un jugador y el Min será el
oponente. MAX será el jugador que inicia el juego, nos marcaremos como objetivo el
encontrar el conjunto de movimientos que ha de hacer el jugador MAX para que llegue al
objetivo (ganar) independientemente de lo que haga el jugador MIN.
El algoritmo tiene una función principal (MiniMax) que es la que retorna la mejor jugada
que se puede realizar, y dos funciones recursivas mutuas (valorMax y valorMin) que
determinan el valor de las jugadas dependiendo de si el nivel es de MAX o de MIN.
Se define la función Heurística como:
f = de filas columnas y diagonales completas libres para MAX
g = de filas columnas y diagonales completas libres para MIN
El análisis se realiza de tal manera que en el nivel 2 la mejor jugada de MIN está
representada por un valor negativo, entonces elegimos el menor valor de cada nivel 2 (en
este caso estamos asumimos el peor de los casos para MAX, que es que MIN juegue bien) y
asociamos a cada nivel 1 el valor menor elegido del nivel 2 correspondiente, de este
conjunto de valores elegimos el mayor debido a que ahora consideramos que MAX tiene
que jugar de buena manera, es así que se asegura un buen juego de MAX.
En el caso particular del ejemplo tenemos que el mayor valor a nivel de MAX es 1, y es la
jugada asociada la que asegurara que MAX juegue de manera óptima (en este ejemplo
aparecen tres posibles jugadas para MAX asociadas al valor 1, esto se debe a la simetría
existente de las jugadas).
De esta manera se analiza y se pueden saber cuáles serán los movimientos óptimos para
MAX, es decir en nuestro caso la máquina.
b. Microprogramación
En este proyecto utilizamos la técnica de microprogramación que se aprendió en la metería
cursada.
Para este caso, las entradas a nuestra memoria es de 12 bits, 4 bits son las entradas de
control y 8 bits para la codificación de paso siguiente, estos 8 bits están codificadas de tal
manera que nos den un código en el sistema hexadecimal, se explicará en los siguientes
puntos.
MD0 MD1 MD2 MD3 MD4 MD5 MD6 MD7 MD8 MD9 MD10 MD11
2 ROTACIONES
a ← i; b ← h ; c ← g ;
d ←f ;e←e; f ←d ;
g ← c ; h ← b ;i ← a ;
b. Programa (Hardware)
1. AHPL
MODULE :TRESENRAYA
MEMORY :G [ 2 ] ; CNT [ 2 ] , H [9 ],PC[9]
INPUTS : KT [9 ], hini , pcini
OUTPUTS : JPC [ 9 ] ; H [ 9 ] ;winpc ; draw
1. G ←CNT
PC =0,0,0,0,0,0,0,0,0
H=0,0,0,0,0,0,0,0,0
CNT ← INC(CNT )
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(1,2,45)
2. PC =1,0,0,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a , b , c , d , f , g , h ,i , e ) /(2,3,8,10,15,19,21,24,26)
3. PC =1,0,0,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g , c ∨ e ∨ f ∨ h ∨i ,d ) /(3,4,5)
4. PC =1,0,0,1,0,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /( 4,2,45)
5. PC =1,0,0,0,0,0,1,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g ∨i ,c ∨ f ∨ h , e ) /(5,6,7)
6. PC =1,0,0,0,1,0,1,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(6,2,45)
7. PC =1,0,0,0,0,0,1,1,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(7,2,45)
8. PC =1,0,0,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g , b ∨e ∨ f ∨h ∨i , d ) /(8,4,9)
9. PC =1,0,0,0,0,0,1,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g ∨i ,b ∨ f ∨h , e ) /(9,6,7)
10. PC =1,0,1,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c , e ∨ f ∨ g ∨ h ∨i ,b ) /(10,11,12)
11. PC =1,1,1,0,0,0,0,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , HIni ) /(11,2,45)
12. PC =1,0,1,0,0,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨i, b ∨ f ∨h , e ) /(12,13,14)
13. PC =1,0,1,0,1,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, PCIni , HIni ) /(13,2,45)
14. PC =1,0,1,0,0,1,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(14,2,45)
15. PC =1,0,1,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c , d ∨ e ∨ g ∨h ∨i , b ) /(15,11,16)
16. PC =1,0,1,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨ g , d ∨ h∨ i, e ) /(16,17,18)
17. PC =1,0,1,0,1,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(17,2,45)
18. PC =1,0,1,1,0,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(18,2,45)
19. PC =1,0,1,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c , d ∨ e ∨ f ∨ h ∨i ,b ) /(19,11,20)
20. PC =1,0,1,0,0,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨i, d ∨ f ∨ h , e ) /(20 , ,13,14)
21. PC =1,0,0,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g , b ∨c ∨ e ∨ f ∨i , d ) /(21,4,22)
22. PC =1,0,1,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨ g , b∨ f ∨i , e ) /(22,17,23)
23. PC =1,1,1,0,0,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(23,2,45)
24. PC =1,0,1,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c , d ∨ e ∨ f ∨ g ∨ h , b ) /(24,11,25)
25. PC =1,0,1,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨ g , d ∨ f ∨h , e ) /(25,17,18)
26. PC =1,0,0,0,0,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨i ,b ,c , d , f , g , h ) /(26,27,31,33,37,40,42)
27. PC =1,0,0,0,0,0,0,1,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨h ∨i , c ∨ f ∨d , g ) /(27,7,28)
28. PC =1,0,1,0,0,0,0,1,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨h ∨i , f , d ) /(28,30,29)
29. PC =1,0,1,1,0,0,0,1,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, PCIni , HIni ) /(29,2,45)
30. PC =1,0,1,1,0,0,0,1,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
draw=1
CNT ← INC(CNT )
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(30,2,45)
31. PC =1,0,0,0,0,0,1,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g ∨i ,c ∨d ∨ f ,h ) /(31,7,32)
32. PC =1,0,0,1,0,0,1,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(32,2,45)
33. PC =1,0,0,0,0,1,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ f ∨i , b ∨ g ∨h , c ) /(33,14,34)
34. PC =1,0,0,0,0,1,1,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ f ∨ g ∨i , b , h ) /(34,35,36)
35. PC =1,0,0,0,0,1,1,1,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(35,2,45)
36. PC =1,1,0,0,0,1,1,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(36,2,45)
37. PC =1,0,0,1,0,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨d ∨i ,b ∨ c ∨ h , g ) /(37,32,38)
38. PC =1,0,1,1,0,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d ∨i, b , h ) /(38,30,39)
39. PC =1,1,1,1,0,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(39,2,45)
40. PC =1,0,1,0,0,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨i, d ∨ f ∨ h , b ) /(40,41,14)
41. PC =1,0,1,0,0,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /( 41,2,45)
42. PC =1,1,0,0,0,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨i , d ∨ f ∨ g , c ) /(42,41,43)
43. PC =1,1,0,0,0,0,1,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ g ∨i , d , f ) /(43,36,44)
44. PC =1,1,0,1,0,0,1,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /( 44,2,45)
45. PC =0,0,0,0,0,0,0,0,0 --reiniciamos los valores de la PC
G ← ( 0,0 ! 0,1 ! 1,0 !1,1! CNT )∗(ka ∨ kb , kg ∨ kd ,kc ∨kf ,ki ∨ k h ,ke )--control para
rotar
CNT ← INC(CNT ) --incrementamos el contador (estado 01)
H ← KT ∨ H
→ ( a ∨c ∨ g ∨i, b ∨ d ∨ f ∨h , e ) /( 46,82,112) –(esquinas, lados, centro)
46. PC =0,0,0,0,1,0,0,0,0–e empieza esquina
CNT ← INC(CNT ) –estado 10
H ← KT ∨ H
→ ( e , b , c , d , f , g , h ,i ) /(46,47,53,59,64,68,74,78) – transferencia con las señales rotadas
47. PC =0,0,1,0,1,0,0,0,0—las soluciones de PC son directo a la salida
CNT ← INC(CNT ) – estado 11
H ← KT ∨ H
→ ( c ∨ e , d ∨ f ∨ h∨ i, g ) /(47,48,49)
48. PC =0,0,1,0,1,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT ) – estado 00
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /( 48,2,45)
49. PC =0,0,1,1,1,0,0,0,0
CNT ← INC(CNT ) – estado 00
H ← KT ∨ H
→ ( c ∨ d ∨ e , h ∨i , f ) /(49,50,51)
50. PC =1,1,0,0,0,0,1,1,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(50,2,45)
51. PC =0,0,1,1,1,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( c ∨ d ∨ e ∨i , h ) /(51,52)
52. PC =0,0,1,1,1,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(52,2,45)
53. PC =0,1,0,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ,d ∨ f ∨ g∨ i, h ) /(53,54,55)
54. PC =0,1,0,0,1,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(54,2,45)
55. PC =0,1,0,1,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨d ∨e , g ∨i , f ) /(55,56,57)
56. PC =0,1,0,1,1,1,0,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(56,2,45)
57. PC =0,1,0,1,1,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨d ∨e ∨ i, g ) /(57,58)
58. PC =0,1,0,1,1,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(58,2,45)
59. PC =0,0,0,0,1,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( e ∨ g , b ∨ f ∨ h ∨i , c ) / (59,48,60)
60. PC =0,1,0,0,1,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ∨ g , f ∨ i , h ) /(60,61,62)
61. PC =0,1,0,0,1,0,1,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(61,2,45)
62. PC =0,1,0,0,1,0,1,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ∨ g ∨ h , f ) /( 62,63)
63. PC =0,1,0,0,1,0,1,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(63,2,45)
64. PC =0,1,0,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ,c ∨d ∨ g ∨i , h ) /(64,54,65)
65. PC =0,1,0,0,1,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ∨ g ,d ∨i , c ) /(65,66,67)
66. PC =0,1,1,0,1,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(66,2,45)
67. PC =0,1,0,0,1,0,1,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ∨ g ∨ i, d ) /(67,63)
68. PC =0,0,0,1,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( d ∨ e , b ∨c ∨h ∨i , f ) /(68,69,70)
69. PC =0,0,0,1,1,1,0,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(69,2,45)
70. PC =1,1,1,0,0,1,1,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ c ∨e ∨f ∨ h , d ∨i , b ) /(70,71,72)
71. PC =0,1,0,1,1,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(71,2,45)
72. PC =0,0,1,1,1,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( c ∨ d ∨ e ∨h , i ) /(72,73)
73. PC =0,0,1,1,1,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(73,2,45)
74. PC =0,0,0,1,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( d ∨ e , b ∨c ∨ g ∨i , f ) /(74,69,75)
75. PC =0,0,1,1,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( c ∨ d ∨ e , b ∨i , g ) /(75,76,77)
76. PC =0,0,1,1,1,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(76,2,45)
77. PC =0,0,1,1,1,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( c ∨ d ∨ e ∨i , b ) /(77,52)
78. PC =0,1,0,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ,c ∨d ∨ f ∨ g ,h ) /(54,79)
79. PC =0,1,0,0,1,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ∨ g ,d ∨ f , g ) /(79,66,80)
80. PC =0,1,0,0,1,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( b ∨e ∨ g ,d ) /(80,73)
81. PC =0,1,0,0,1,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(81,2,45)
82. PC =0,0,0,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( e , a , c , d , f , g , h ,i ) /(82,47,83,89,94,99,104,107)
83. PC =1,0,0,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨e , d ∨ f ∨ g ∨h , i ) /(83,84,85)
84. PC =1,0,0,0,1,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(84,2,45)
85. PC =1,0,0,0,1,1,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨e ∨ f , g ∨h , d ) /(85,86,87)
86. PC =1,0,0,1,1,1,0,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(86,2,45)
87. PC =1,0,0,0,1,1,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨e ∨ f ∨ g , h ) /( 87,88)
88. PC =1,0,0,0,1,1,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(88,2,45)
89. PC =1,0,0,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨e , c ∨ f ∨ g ∨ h , i ) /(89,84,90)
90. PC =1,0,1,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨e , f ∨ h , g ) /(90,91,92)
91. PC =1,0,1,0,1,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(91,2,45)
92. PC =1,0,1,0,1,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨e ∨ h , f ) /(92,93)
93. PC =1,0,1,0,1,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(93,2,45)
94. PC =0,0,1,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( c ∨ e , a ∨d ∨h ∨i , g ) /(94,48,95)
95. PC =1,0,1,0,1,0,0,0, 0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨e ,d ∨h , i ) /(95,96,97)
96. PC =1,0,1,0,1,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(96,2,45)
97. PC =1,0,1,0,1,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨e ∨ h , d ) /(97,98)
98. PC =1,0,1,0,1,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(98,2,45)
99. PC =0,0,0,1,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( d ∨ e , a ∨ c ∨h ∨i , f ) / (99,69,100)
100. PC =0,0,0,1,1,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( d ∨ e ∨i , c ∨ h , a ) /(100,101,102)
101. PC =1,0,0,1,1,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(101,2,45)
102. PC =0,0,1,1,1,0,0,0,1
CNT ← INC(CNT )
H ← KT ∨ H
→ ( c ∨ d ∨ e ∨i , h ) /(102,103)
103. PC =0,0,1,1,1,0,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(103,2,45)
104. PC =1,0,0,0,1,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨e , c ∨d ∨ f ∨ g ,i ) /(104,84,105)
105. PC =1,0,0,0,1,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨e ∨ g , c ∨ f , d ) /(105,106,91)
106. PC =1,0,0,1,1,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(106,2,45)
107. PC =0,0,0,0,1,1,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( e ∨ f , a ∨c ∨ g ∨ h , d ) /(107,69,108)
108. PC =0,0,0,0,1,1,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( e ∨ f ∨ g , a ∨h , c ) /(108,109,110)
109. PC =0,0,1,0,1,1,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(109,2,45)
110. PC =1,0,0,0,1,1,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨e ∨ f ∨ g , h ) /( 110,111)
111. PC =1,0,0,0,1,1,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(111,2,45)
112. PC =1,0,0,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a , b , c , d , f , g , h ,i ) /(112,113,128,136,142,147,155,160 )
113. PC =1,0,0,0,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨h , c , d , f , g , i ) /(113,114,118,122,125,127)
114. PC =1,0,0,0,0,0,1,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g ∨h , f ∨i , d ) /(114,115,116)
115. PC =1,0,0,1,0,0,1,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(115,2,45)
116. PC =1,0,0,0,0,1,1,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ f ∨ g ∨ h ,i ) /(116,117)
117. PC =1,0,0,0,0,1,1,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(117,2,45)
118. PC =1,0,0,0,0,1,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ f ∨ h , c , g ,i ) /( 118,116,119,121)
119. PC =1,0,1,0,0,1,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨f ∨ h ,i ) /(119,120)
120. PC =1,0,1,0,0,1,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(120,2,45)
121. PC =1,0,0,0,0,1,1,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ f ∨ g ∨ h , c ) /(121,117)
122. PC =1,0,0,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨d ∨h , c ∨ i, g ) /(122,115,123)
123. PC =1,0,1,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨cvd ∨h , i ) /(123,124)
124. PC =0,1,0,0,1,1,1,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(124,2,45)
125. PC =1,0,1,0,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨h , d , f ,i ) /( 125,119,123,126)
126. PC =1,0,1,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d ∨h , f ) /(126,124)
127. PC =1,0,0,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨d ∨h , c ∨ f , g ) /(127,115,126)
128. PC =1,0,0,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ g , b ∨f ∨ h∨ i, d ) /(128,129,130)
129. PC =1,0,0,1,0,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(129,2,45)
130. PC =1,0,0,0,0,1,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ f ∨ g , b , h , i ) /(130,131,133,135)
131. PC =1,0,0,0,0,1,1,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( i ) /(132)
132. PC =1,0,0,0,0,1,1,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(132,2,45)
133. PC =1,1,0,0,0,1,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ f ∨ g ,i ) /(133,134)
134. PC =1,1,0,0,0,1,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(134,2,45)
135. PC =1,1,0,0,0,1,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ f ∨ g , h ) /(135,134)
136. PC =1,0,0,0,0,1,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨ f , b , c , g ,h , i ) /(136,118,130,137,140,141)
137. PC =1,0,1,0,0,1,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨f , h ∨i , b ) /(137,138,139)
138. PC =1,1,1,0,0,1,0,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(138,2,45)
139. PC =1,0,1,0,0,1,0,0,1
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(139,2,45)
140. PC =1,1,0,0,0,1,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ f , g ∨i , c ) /(140,139,133)
141. PC =1,1,0,0,0,1,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ f , g ∨ h , c ) /(141,138,135)
142. PC =1,0,0,1,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨d , b ∨c ∨ h ∨i , g ) /(142,129,143)
143. PC =1,0,1,1,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d , h∨ i, b ) /(143,144,145)
144. PC =1,1,1,1,0,0,0,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(144,2,45)
145. PC =1,0,1,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d ∨h , i ) /(145,146)
146. PC =1,0,1,1,0,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(146,2,45)
147. PC =1,0,1,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( d ∨ f ∨h ∨i , b ) /(148,149)
148. PC =1,1,1,0,0,0,0,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(148,2,45)
149. PC =1,0,1,0,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨h , d , f ,i ) /(149,150,152,154)
150. PC =1,0,1,0,0,1,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨f ∨ h ,i ) /(150,151)
151. PC =1,0,1,0,0,1,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(151,2,45)
152. PC =1,0,1,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d ∨h , i ) /(152,153)
153. PC =1,0,1,1,0,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(153,2,45)
154. PC =1,0,1,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d ∨h , f ) /(154,153)
155. PC =1,1,0,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b , d ∨f ∨ g ∨i , c ) /(155,148,156)
156. PC =1,1,0,0,0,0,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ g , f ∨i , d ) /(156,157,158)
157. PC =1,1,0,1,0,0,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
winpc =1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(157,2,45)
158. PC =1,1,0,0,0,1,1,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨b ∨ f ∨ g ,i ) /(158,159)
159. PC =1,1,0,0,0,1,1,0,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(159,2,45)
160. PC =1,0,1,0,0,0,0,0,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c , d ∨ f ∨ g ∨h , b ) /(160,148,161)
161. PC =1,0,1,0,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨h , d , f , g ) /(161,162,164,166)
162. PC =1,0,1,0,0,1,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨f ∨ h , g ) /(162,163)
163. PC =1,0,1,0,0,1,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(163,2,45)
164. PC =1,0,1,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d ∨h , g ) /(164,165)
165. PC =1,0,1,1,0,0,0,1,0
H ←0,0,0,0,0,0,0,0,0
G ←CNT
CNT ← INC(CNT )
draw=1
→ ( a ∨b ∨ c ∨d ∨e ∨f ∨ g ∨ h∨ i, pcini , hini ) /(165,2,45)
166. PC =1,0,1,1,0,0,0,1,0
CNT ← INC(CNT )
H ← KT ∨ H
→ ( a ∨c ∨d ∨h , f ) /(166,165)
END SEQUENCE
--rotaciones
ka=K 0 ∧ K 1 ∧ K 2 ∧ K 3
kb=K 0 ∧ K 1 ∧ K 2 ∧ K 3
kc= K 0 ∧ K 1 ∧ K 2 ∧ K 3
kd =K 0 ∧ K 1 ∧ K 2 ∧ K 3
ke=K 0 ∧ K 1 ∧ K 2 ∧ K 3
kf =K 0 ∧ K 1 ∧ K 2 ∧ K 3
kg=K 0 ∧ K 1 ∧ K 2 ∧ K 3
kh=K 0 ∧ K 1 ∧ K 2 ∧ K 3
ki=K 0 ∧ K 1 ∧ K 2 ∧ K 3
PCini=K 0 ∧ K 1 ∧ K 2 ∧ K 3
Hini=K 0 ∧ K 1 ∧ K 2 ∧ K 3
Reset=K 0 ∧ K 1 ∧ K 3 ∧ K 3
KT =ka , kb , kc , kd , ke , kf , kg , kh , ki
a=( ka ! kg ! kc ! ki )∗[ ( G0 ∧G 1 ) , ( G 0 ∧ G 1 ) , ( G0 ∧G 1 ) , ( G 0 ∧ G 1 ) ]
b=( kb ! kd ! kf ! kh )∗[( G0 ∧ G1) , ( G0 ∧G1 ) , ( G0 ∧ G 1) , ( G0 ∧G1 ) ]
c= ( kc ! ka! ki! kg )∗[ ( G0 ∧ G 1 ) , ( G0 ∧G1 ) , ( G0 ∧ G 1 ) , ( G 0 ∧G1 ) ]
d= ( kd ! kh !kb !kf )∗[ ( G0 ∧G1 ) , ( G 0 ∧ G1 ) , ( G0 ∧G 1 ) , ( G0 ∧ G1 ) ]
f =( kf ! kb ! kh ! kd )∗[ ( G0 ∧ G1 ) , ( G 0 ∧G1 ) , ( G 0 ∧ G1 ) , ( G 0 ∧G 1 ) ]
g= ( kg !ki ! ka ! kc )∗[ ( G0 ∧G1 ) , ( G 0 ∧G1 ) , ( G0 ∧G1 ) , ( G 0 ∧G1 ) ]
h=( kh ! kf ! kd ! kb )∗[( G 0 ∧G1 ) , ( G0 ∧G 1 ) , ( G0 ∧G1 ) , ( G0 ∧G1 ) ]
i=( ki ! kc ! kg ! ka )∗[ ( G 0 ∧G1 ) , ( G0 ∧G 1 ) , ( G0 ∧G1 ) , ( G0 ∧G1 ) ]
e=ke
JPC=¿
( PC 6 , PC 3 , PC 0 , PC 7 , PC 4 , PC 1 , PC 8 , PC 5 , PC 2 ¿ ! (
PC 8 , PC 7 , PC 6 , PC 5 , PC 4 , PC 3 , PC 2 , PC 1 , PC 0 ¿ ¿∗¿
[ ( G0 ∧ G1) , ( G 0 ∧G 1 ) , ( G0 ∧ G 1 ) , ( G 0 ∧G 1 ) ]
END
c. Circuito
Codificación de entradas
Entrada Entrada codificada Entrada codificada
(Código Binario) (Código Hexadecimal)
[A,B,C,D] [A,B,C,D]
a 0000 0
b 0001 1
c 0010 2
d 0011 3
e 0100 4
f 0101 5
g 0110 6
h 0111 7
i 1000 8
PCIni 1001 9
HIni 1010 A
Reset 1011 B
Codificación de los pasos:
Paso Pasos codificados Pasos codificados
(Código Binario) (Código Hexadecimal)
1 00000000 00
2 00000001 01
3 00000010 02
4 00000011 03
5 00000100 04
… … …
162 10100001 A1
163 10100010 A2
164 10100011 A3
165 10100100 A4
166 10100101 A5
Dirección de memoria:
MD0 MD1 MD2 MD3 MD4 MD5 MD6 MD7 MD8 MD9 MD10 MD11
ENTRADAS SALIDAS
K0:3 GH0:1
0000(ka) 00
0001(kb) 00
0010(kc) 10
0100(kd) 01
0101(ke) 00
0110(kf) 10
1000(kg) 01
1001(kh) 11
1010(ki) 11
Contador de esquina aleatoria cuando inicia la maquina
ENTRADAS SALIDAS
K0:3 KT0:8
0000(ka) 1000000000
0001(kb) 0100000000
0010(kc) 0001000000
0100(kd) 0000100000
0101(ke) 0000010000
0110(kf) 0000001000
1000(kg) 0000000100
1001(kh) 0000000010
1010(ki) 0000000001
Memorias auxiliares para el estado del tablero de la maquina y señales auxiliares
Contenido de memoria A (lados del tablero)
DIRECCION DATO
(HEXADECIMAL (BINARIO)
)
G0:1 MD’0:7 a,b,c,f,i,h,g,d(JP
C)
0 00 11111111
0 01 01111111
0 02 01111101
0 03 01111100
0 04 01110101
0 05 01110101
0 06 01110001
0 07 01111101
0 08 01110101
0 09 01011111
0 0A 00011111
0 0B 01010111
0 0C 01010111
0 0D 01000111
0 0E 01011111
0 0F 01011101
0 10 01011101
0 11 01011100
0 12 01011111
0 13 01010111
0 14 01111101
0 15 01011101
0 16 00011101
0 17 01011111
0 18 01011101
0 19 01110111
0 1A 01110011
0 1B 01010011
0 1C 01000011
0 1D 01010010
0 1E 01110101
0 1F 01110100
0 20 01100111
0 21 01100101
0 22 01100001
0 23 00100101
0 24 01110110
0 25 01010110
0 26 00010110
0 27 01010111
0 28 00010111
0 29 00110111
0 2A 00110101
0 2B 00110100
0 2C 11111111
0 2D 11111111 0 57 01101101
0 2E 11011111 0 58 01111111
0 2F 11011101 0 59 01011111
0 30 11011110 0 5A 01011101
0 31 11001110 0 5B 01011011
0 32 11010110 0 5C 01011011
0 33 11010110 0 5D 11011111
0 34 10111111 0 5E 01011111
0 35 10111011 0 5F 01010111
0 36 10111110 0 60 01011011
0 37 10101110 0 61 01011011
0 38 10110110 0 62 11111110
0 39 10110110 0 63 11110110
0 3A 11111101 0 64 01110110
0 3B 10111101 0 65 11010110
0 3C 10111001 0 66 11010110
0 3D 10110101 0 67 01111111
0 3E 10110101 0 68 01111101
0 3F 10111111 0 69 01111100
0 40 10111101 0 6A 11101111
0 41 10011101 0 6B 11101101
0 42 10110101 0 6C 11001101
0 43 11111110 0 6D 01101101
0 44 11101110 0 6E 01101101
0 45 11111010 0 6F 01111111
0 46 10111010 0 70 01111011
0 47 11011010 0 71 01111001
0 48 11011010 0 72 01111000
0 49 11111110 0 73 01101001
0 4A 11011110 0 74 01101001
0 4B 11011100 0 75 01101011
0 4C 11010110 0 76 01001011
0 4D 10111111 0 77 01001011
0 4E 10111101 0 78 01101001
0 4F 10101101 0 79 01111010
0 50 10101101 0 7A 01011010
0 51 11111111 0 7B 01011010
0 52 01111111 0 7C 01011011
0 53 01110111 0 7D 01011010
0 54 01101111 0 7E 01111010
0 55 01101110 0 7F 01111101
0 56 01101101 0 80 01111100
0 81 01101101 1 05 11010101
0 82 01101001 1 06 11000101
0 83 01101001 1 07 11110101
0 84 00101101 1 08 11010101
0 85 00101101 1 09 01111101
0 86 00101101 1 0A 01111100
0 87 01101111 1 0B 01011101
0 88 01001111 1 0C 01011101
0 89 00001111 1 0D 00011101
0 8A 01000111 1 0E 01111101
0 8B 00101111 1 0F 01110101
0 8C 00101111 1 10 01110101
0 8D 01111110 1 11 01110001
0 8E 01011110 1 12 01111101
0 8F 00011110 1 13 01011101
0 90 01011010 1 14 11110101
0 91 01011010 1 15 01110101
0 92 01011111 1 16 01110100
0 93 00011111 1 17 01111101
0 94 01011011 1 18 01110101
0 95 01001011 1 19 11011101
0 96 01001011 1 1A 11001101
0 97 01011010 1 1B 01001101
0 98 01011010 1 1C 00001101
0 99 01011010 1 1D 01001001
0 9A 00111111 1 1E 11010101
0 9B 00111101 1 1F 11010001
0 9C 00111100 1 20 10011101
0 9D 00101101 1 21 10010101
0 9E 00101101 1 22 10000101
0 9F 01011111 1 23 10010100
0 A0 01011011 1 24 11011001
0 A1 01001011 1 25 01011001
0 A2 01001011 1 26 01011000
0 A3 01011010 1 27 01011101
0 A4 01011010 1 28 01011100
0 A5 01011010 1 29 11011100
1 00 11111111 1 2A 11010100
1 01 11111101 1 2B 11010000
1 02 11110101 1 2C 11111111
1 03 11110001 1 2D 11111111
1 04 11010101 1 2E 01111111
1 2F 01110111 1 59 01111101
1 30 01111011 1 5A 01110101
1 31 00111011 1 5B 01101101
1 32 01011011 1 5C 01101101
1 33 01011011 1 5D 01111111
1 34 11111110 1 5E 01111101
1 35 11101110 1 5F 01011101
1 36 11111010 1 60 01101101
1 37 10111010 1 61 01101101
1 38 11011010 1 62 11111011
1 39 11011010 1 63 11011011
1 3A 11110111 1 64 11011001
1 3B 11110110 1 65 01011011
1 3C 11100110 1 66 01011011
1 3D 11010110 1 67 11111101
1 3E 11010110 1 68 11110101
1 3F 11111110 1 69 11110001
1 40 11110110 1 6A 10111111
1 41 01110110 1 6B 10110111
1 42 11010110 1 6C 00110111
1 43 11111011 1 6D 10110101
1 44 10111011 1 6E 10110101
1 45 11101011 1 6F 11111101
1 46 11101010 1 70 11101101
1 47 01101011 1 71 11100101
1 48 01101011 1 72 11100001
1 49 11111011 1 73 10100101
1 4A 01111011 1 74 10100101
1 4B 01110011 1 75 10101101
1 4C 01011011 1 76 00101101
1 4D 11111110 1 77 00101101
1 4E 11110110 1 78 10100101
1 4F 10110110 1 79 11101001
1 50 10110110 1 7A 01101001
1 51 11111111 1 7B 01101001
1 52 11111101 1 7C 01101101
1 53 11011101 1 7D 01101001
1 54 10111101 1 7E 11101001
1 55 10111001 1 7F 11110101
1 56 10110101 1 80 11110001
1 57 10110101 1 81 10110101
1 58 11111101 1 82 10100101
1 83 10100101 2 07 01011111
1 84 10110100 2 08 01011101
1 85 10110100 2 09 11010111
1 86 10110100 2 0A 11000111
1 87 10111101 2 0B 11010101
1 88 00111101 2 0C 11010101
1 89 00111100 2 0D 11010001
1 8A 00011101 2 0E 11010111
1 8B 10111100 2 0F 01010111
1 8C 10111100 2 10 01010111
1 8D 11111001 2 11 00010111
1 8E 01111001 2 12 11010111
1 8F 01111000 2 13 11010101
1 90 01101001 2 14 01011111
1 91 01101001 2 15 01010111
1 92 01111101 2 16 01000111
1 93 01111100 2 17 11010111
1 94 01101101 2 18 01010111
1 95 00101101 2 19 11011101
1 96 00101101 2 1A 11011100
1 97 01101001 2 1B 11010100
1 98 01101001 2 1C 11010000
1 99 01101001 2 1D 10010100
1 9A 11111100 2 1E 01011101
1 9B 11110100 2 1F 00011101
1 9C 11110000 2 20 11011001
1 9D 10110100 2 21 01011001
1 9E 10110100 2 22 01011000
1 9F 01111101 2 23 01001001
1 A0 01101101 2 24 10011101
1 A1 00101101 2 25 10010101
1 A2 00101101 2 26 10000101
1 A3 01101001 2 27 11010101
1 A4 01101001 2 28 11000101
1 A5 01101001 2 29 11001101
2 00 11111111 2 2A 01001101
2 01 11011111 2 2B 00001101
2 02 01011111 2 2C 11111111
2 03 00011111 2 2D 11111111
2 04 01011101 2 2E 11110111
2 05 01011101 2 2F 01110111
2 06 01011100 2 30 10110111
2 31 10110011 2 5B 11010110
2 32 10110101 2 5C 11010110
2 33 10110101 2 5D 11110111
2 34 11101111 2 5E 11010111
2 35 11101110 2 5F 11010101
2 36 10101111 2 60 11010110
2 37 10101011 2 61 11010110
2 38 10101101 2 62 10111111
2 39 10101101 2 63 10111101
2 3A 01111111 2 64 10011101
2 3B 01101111 2 65 10110101
2 3C 01101110 2 66 10110101
2 3D 01101101 2 67 11011111
2 3E 01101101 2 68 01011111
2 3F 11101111 2 69 00011111
2 40 01101111 2 6A 11111011
2 41 01100111 2 6B 01111011
2 42 01101101 2 6C 01110011
2 43 10111111 2 6D 01011011
2 44 10111011 2 6E 01011011
2 45 10111110 2 6F 11011111
2 46 10101110 2 70 11011110
2 47 10110110 2 71 01011110
2 48 10110110 2 72 00011110
2 49 10111111 2 73 01011010
2 4A 10110111 2 74 01011010
2 4B 00110111 2 75 11011010
2 4C 10110101 2 76 11010010
2 4D 11101111 2 77 11010010
2 4E 01101111 2 78 01011010
2 4F 01101011 2 79 10011110
2 50 01101011 2 7A 10010110
2 51 11111111 2 7B 10010110
2 52 11011111 2 7C 11010110
2 53 11011101 2 7D 10010110
2 54 11011011 2 7E 10011110
2 55 10011011 2 7F 01011111
2 56 01011011 2 80 00011111
2 57 01011011 2 81 01011011
2 58 11011111 2 82 01011010
2 59 11010111 2 83 01011010
2 5A 01010111 2 84 01001011
2 85 01001011 3 09 11110101
2 86 01001011 3 0A 11110001
2 87 11011011 3 0B 01110101
2 88 11010011 3 0C 01110101
2 89 11000011 3 0D 01110100
2 8A 11010001 3 0E 11110101
2 8B 11001011 3 0F 11010101
2 8C 11001011 3 10 11010101
2 8D 10011111 3 11 11000101
2 8E 10010111 3 12 11110101
2 8F 10000111 3 13 01110101
2 90 10010110 3 14 11010111
2 91 10010110 3 15 11010101
2 92 11010111 3 16 11010001
2 93 11000111 3 17 11110101
2 94 11010110 3 18 11010101
2 95 11010010 3 19 01110111
2 96 11010010 3 1A 00110111
2 97 10010110 3 1B 00110101
2 98 10010110 3 1C 00110100
2 99 10010110 3 1D 00100101
2 9A 11001111 3 1E 01010111
2 9B 01001111 3 1F 01000111
2 9C 00001111 3 20 01110110
2 9D 01001011 3 21 01010110
2 9E 01001011 3 22 00010110
2 9F 11010111 3 23 01010010
2 A0 11010110 3 24 01100111
2 A1 11010010 3 25 01100101
2 A2 11010010 3 26 01100001
2 A3 10010110 3 27 01110101
2 A4 10010110 3 28 01110001
2 A5 10010110 3 29 01110011
3 00 11111111 3 2A 01010011
3 01 11110111 3 2B 01000011
3 02 11010111 3 2C 11111111
3 03 11000111 3 2D 11111111
3 04 01010111 3 2E 11111101
3 05 01010111 3 2F 11011101
3 06 00010111 3 30 11101101
3 07 11010111 3 31 11101100
3 08 01010111 3 32 01101101
3 33 01101101 3 5D 11111101
3 34 11111011 3 5E 11110101
3 35 10111011 3 5F 01110101
3 36 11101011 3 60 10110101
3 37 11101010 3 61 10110101
3 38 01101011 3 62 11101111
3 39 01101011 3 63 01101111
3 3A 11011111 3 64 01100111
3 3B 11011011 3 65 01101101
3 3C 10011011 3 66 01101101
3 3D 01011011 3 67 11110111
3 3E 01011011 3 68 11010111
3 3F 11111011 3 69 11000111
3 40 11011011 3 6A 11111110
3 41 11011001 3 6B 11011110
3 42 01011011 3 6C 11011100
3 43 11101111 3 6D 11010110
3 44 11101110 3 6E 11010110
3 45 10101111 3 6F 11110111
3 46 10101011 3 70 10110111
3 47 10101101 3 71 10010111
3 48 10101101 3 72 10000111
3 49 11101111 3 73 10010110
3 4A 11101101 3 74 10010110
3 4B 11001101 3 75 10110110
3 4C 01101101 3 76 10110100
3 4D 11111011 3 77 10110100
3 4E 11011011 3 78 10010110
3 4F 11011010 3 79 10100111
3 50 11011010 3 7A 10100101
3 51 11111111 3 7B 10100101
3 52 11110111 3 7C 10110101
3 53 01110111 3 7D 10100101
3 54 11110110 3 7E 10100111
3 55 11100110 3 7F 11010111
3 56 11010110 3 80 11000111
3 57 11010110 3 81 11010110
3 58 11110111 3 82 10010110
3 59 11110101 3 83 10010110
3 5A 11010101 3 84 11010010
3 5B 10110101 3 85 11010010
3 5C 10110101 3 86 11010010
3 87 11110110 3 97 10100101
3 88 11110100 3 98 10100101
3 89 11110000 3 99 10100101
3 8A 01110100 3 9A 11110011
3 8B 11110010 3 9B 11010011
3 8C 11110010 3 9C 11000011
3 8D 11100111 3 9D 11010010
3 8E 11100101 3 9E 11010010
3 8F 11100001 3 9F 11110101
3 90 10100101 3 A0 10110101
3 91 10100101 3 A1 10110100
3 92 11110101 3 A2 10110100
3 93 11110001 3 A3 10100101
3 94 10110101 3 A4 10100101
3 95 10110100 3 A5 10100101
3 96 10110100
FRECUENCIAS MÁXIMAS
LAYOUT.
WIN OR DRAW
PASO 45
PASO 1
WINPC
DRAW
BCNT
GPC
HPC
CPC
DPC
BPC
APC
EPC
FPC
IPC
BC
PC
15
18
12
13
16
17
19
12
13
16
17
19
15
18
11
11
D1
D2
D4
D5
D7
D0
D3
D6
D0
D3
D6
D1
D2
D4
D5
D7
27C256
27C256
VPP
VPP
A10
A13
A14
A12
A12
A10
A13
A14
A11
A11
OE
OE
CE
CE
U7
A1
A2
A4
A5
A7
A8
U8
A0
A3
A6
A9
A0
A3
A6
A9
A1
A2
A4
A5
A7
A8
10
24
25
21
23
26
27
20
22
9
8
7
6
5
4
3
25
21
23
2
26
27
20
22
1
10
9
8
7
6
5
4
3
24
1
C1
C0
C0
C1
16
12
15
19
2
5
6
9
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
74LS273
CLK
MR
D1
D2
D4
D5
D7
D0
D3
D6
U5
17
3
4
7
8
13
14
18
11
1
U9
1 23
CLKN I0/CLK IO0 EH
2 22
C2 RESET I1 IO1 Q0
3 21
BCNT I2 IO2 Q1
4 20
I3 IO3 Q2
5 19
I4 IO4 Q3
10u 6 18
C1 I5 IO5 Q4
7 17
I6 IO6 Q5
8 16
PC I7 IO7 Q6
1
2
3
9 15
U1 EPC I8 IO8 Q7
1u 10 14
I9 IO9 Q8
11 6 11
A X1 KBM I10
1 2 3 10 5 13
X2 OSC I11
8
X3
7 12 AM22V10
X4 DA CLK U3
13
B OE CLKN
4 5 6 1 23
CLK I0/CLK IO0 CLKN
1 17 2 22
Y1 A I1 IO1 CLKF U4 U5 U7
2 16 3 21
Y2 B I2 IO2
3 15 4 20 10 11 3 2 10 11
C Y3 C I3 IO3 A0 D0 D0 Q0 A0 D0 DPC
7 8 9 4 14 5 19 9 12 4 5 9 12
Y4 D I4 IO4 A1 D1 D1 Q1 A1 D1 GPC
6 18 8 13 7 6 8 13
C1 I5 IO5 A2 D2 D2 Q2 A2 D2 HPC
MM74C922 7 17 7 15 8 9 7 15
C0 I6 IO6 A3 D3 D3 Q3 A3 D3 IPC
8 16 6 16 13 12 6 16
D CNT1 I7 IO7 CO1 A4 D4 D4 Q4 A4 D4 FPC
0 # 9 15 5 17 14 15 5 17
CNT0 I8 IO8 CO0 A5 D5 D5 Q5 A5 D5 CPC
10 14 4 18 17 16 4 18
BC I9 IO9 A6 D6 D6 Q6 A6 D6 BPC
11 3 19 18 19 3 19
BCNT I10 A7 D7 D7 Q7 A7 D7 APC
13 25 25
I11 A8 C1 A8
24 11 24
A9 CLKN CLK C0 A9
AM22V10 21 1 21
A10 RESET MR A10
23 23
A11 A11
2 74LS273 2
A12 A12
26 26
A13 A13
27 27
A14 A14
20 20
CE CE
22 22
OE OE
1 1
U2 U6 VPP VPP
3 14 3 2 U10 U11 27C256 27C256
D0 Q0 CNT1 CO1 D0 Q0 C1
4 13 4 5 1 23 1 23
D1 Q1 CNT0 CO0 D1 Q1 C0 I0/CLK IO0 AH I0/CLK IO0 FH U8
5 12 6 7 2 22 2 22
D2 Q2 D2 Q2 Q0 I1 IO1 BH Q5 I1 IO1 GH
6 11 11 10 3 21 3 21 10 11
D3 Q3 D3 Q3 Q1 I2 IO2 CH Q6 I2 IO2 HH A0 D0 WINPC
15 13 12 4 20 4 20 9 12
RCO D4 Q4 Q2 I3 IO3 DH Q7 I3 IO3 IH A1 D1 DRAW
7 14 15 5 19 5 19 8 13
ENP D5 Q5 Q3 I4 IO4 Q8 I4 IO4 A2 D2 EPC
10 6 18 6 18 7 15
ENT APC I5 IO5 FPC I5 IO5 A3 D3
2 9 7 17 7 17 6 16 WIN OR DRAW
CLKN CLK CLKF CLK BPC I6 IO6 GPC I6 IO6 A4 D4 BCNT
9 1 8 16 8 16 5 17 PASO 1
LOAD RESET MR CPC I7 IO7 HPC I7 IO7 A5 D5 PC
1 9 15 9 15 4 18 PASO 45
RESET MR DPC I8 IO8 IPC I8 IO8 A6 D6 BC
74LS174 10 14 10 14 3 19
I9 IO9 I9 IO9 A7 D7
74LS163 11 11 25
I10 I10 C1 A8
13 13 24
I11 I11 C0 A9
21
A10
AM22V10 AM22V10 23
A11
2
A12
26
A13
27
A14
CH
20
AH
APC
BH
BPC
CPC
CE
22
OE
1
VPP
WINPC DRAW
B
B
B
R
R
R
G
G
G
27C256
D12
LED-BLUE
A
A
A
DH
DPC
EH
EPC
FH
FPC
R1 R2 R3
R8 R11 10 10 10
B
B
B
R
R
R
G
G
G
10 10 VLED
A
A
A
GH
GPC
HH
HPC
IH
IPC
R4 R5 R6
10 10 10
B
B
B
R
R
R
G
G
G
A
A
A
R7 R9 R10
10 10 10
d. Simulación (diagrama de tiempos)
i. Empieza humano
Para este caso, es necesario realizar el algoritmo para las diferentes jugadas realizadas en
cada caso, así como se hizo en la parte anterior.
Para implementar el circuito tomando en cuenta el tamaño, velocidad, potencia y costo se
llegó a la conclusión de que en cuestión de velocidad y potencia no se diferencian en gran
manera pero al momento de comparar costos y tamaño se evidencio que es mejor
implementarlo en un dispositivo programable, por ejemplo un Arduino ya que ocuparía
menos espacio y el costo de los materiales se reduciría considerablemente, al
implementarlo en un dispositivo programable se podría aumentar las mejoras mencionadas
anteriormente sin la necesidad de incrementar el tamaño o el costo del circuito.
7. REFERENCIAS
a. Apuntes de Clases y Documentos Facilitados por el Docente
b. Inteligencia Artificial Un Enfoque Moderno Russell 2da Edición Prentice-
Hall
c. Sistemas Digitales, Principios y Aplicaciones Ronal J. Tocci Décima
Edición 2007.
d. Problemas de Circuitos y sistemas Digitales Carmen Baena Oliva
McGraw-Hill 2002
e. https://www.coolmath-games.com/0-strategic-tic-tac-toe
f. http://es.wikihow.com/ganar-jugando-tres-en-raya
g. http://razonartificial.com/2010/08/algoritmo-minimax-un-jugador-
incansable/
8. ANEXOS
CIRCUITO ARMADO