Está en la página 1de 4

ESCUELA POLITECNICA NACIONAL

FACULTAD DE INGENIERIA DE SISTEMAS


INGENIERIA EN SOFTWARE
Periodo Académico: 2021_B

Asignatura: Inteligencia Artificial y Aprendizaje Automático.

Profesor: Ing. HERNANDEZ ALVAREZ MYRIAM BEATRIZ.

Nombre: Deyvid Joel Paucar Nasimba

Knowledge Engineering
1. Revisar los programas para los juegos de clue y rompecabezas lógico (casas de Harry
Potter), modificarlos para otras instancias de juego que den resultados diferentes.

1.1. Juego de clue


El juego consiste en inferir quien es el asesino a partir de la información que el jugador
proporciona.

Explicación del código,


En logic.py, se tiene la declaración de la clase que servirá para declaras las proposiciones
que servirán para la lógica proposicional, también contiene las clases para el trabajo de
la lógica proposicional(operadores lógicos) como: la negación, and, or, implicación y
bicondicional. Tiene la clase “formula”, el cual servirá para guardar toda la cadena de
caracteres que se almacenará gracias a los operadores lógicos.
En clue.py, contiene las declaraciones de las proposiciones iniciales para que el juego
empiece, las personas, las habitaciones y las armas. La función “check_knowledge”
contiene la validación de si la proposición se que le da de entraba es correcta(Yes), y en
caso de que no existan datos suficientes como para saber quién es el asesino(MAYBE).
Se le proporciona los primeros datos al algoritmo para que el juego pueda comenzar y
mediante en trabajo de lógica proposicional, el programa publique el nombre del asesino.

Captura de pantalla de ejecución


Al programa se le agrego las que no fue Plum, no fue en kitchen y no fue con wrench,
después de le agrego que no fue Scarlet, no bue en el baño y no fue con un revolver, a
partir de eso, el programa imprimió los siguientes resultados.
1.2. Juego de rompecabezas lógico (casas de Harry Potter)
El juego consiste en inferir el orden que personaje pertenece a que casa de Howards.

Explicación del código:


En puzzle.py, se tiene una lista de nombre y una lista de las casas en Howards, se declaran
varios bucles “for” para iterar los arreglos y unir cada persona con cada casa, se verifica
la condición de que, solo una persona por casa y una casa por persona, y ponerlos como
una proposición gracias a la llaman de la clase “Symbol” perteneciente a “logic.py”.
Finalmente, se le agregan las premisas iniciales para que el programa publique que
persona pertenece a cada casa y toda la cadena lógica.

Captura de pantalla de la ejecución del código.


Cadena lógica almacenada.

Respuestas de las personas con sus respectivas casas:


Para este resultado, se le dio las siguientes premisas al programa.

• Minerva pertenece a Slytherin o Hufflepuff (MinervaSlytherin or


MinervaHufflepuff)
• Pomona no pertenece a Ravenclaw(Not PomonaRavenclaw)
• Gilderoy pertenece a Gryffindor (GilderoyGryffindor)

Con estas premisas el programa publicó los siguientes resultados:


2. Programar en Python el juego de mastermind para 4 colores.
El problema consiste en que el programa debe publicar el orden correcto de 4
colores(rojo, azul, verde, amarillo), a partir del mero de colores mal ubicados en otros
dos arreglos.

Explicación del código


Se toma a cada color como si fueran una proporción llamando al método “Symbol” del
archivo “logic.py”, y se almacenan estos cuatro colores en dos arreglos, se declaran dos
variables enteras que contendrán el número de colores bien posicionados en cada arreglo.
Se iteran ambos arreglos, comparando cada uno de sus componentes y se ban buscando
los colores mal posicionados en base las variables enteras, a partir de esto se almacena en
un tercer arreglo “b” si la posición de color está bien ubicada o “m” si está mal ubicada.
Finalmente se iteran los arreglos y re intercambian las posiciones de los colores en caso
de estar mal ubicados y se aumentan los valores de las variables hasta que lleguen a 4,
cuando las variables alcancen el valor de 4, significará que el arreglo tendrá sus colores
bien posicionados y se termina el juego imprimiendo el arreglo bien ubicado.

Captura de pantalla de la ejecución del código.


Se imprimen los arreglos iniciales, el arreglo que informa las posiciones de colores mal
ubicados en base al arreglo que tenga la mayor cantidad de colores bien ubicados y
finamente se imprime el arreglo bien ubicado.
Conclusiones:
• La lógica proposicional sirve nos puede servir para encontrar la verdad a partir
de premisas iniciales.
• Se implemento operadores lógicos para averiguar verdades ante distintos juegos.

También podría gustarte