Este examen puede ser elaborado de manera individual o en parejas.
En un solo archivo llamado Examen5.java
, escribe un programa completo en Java que permita jugar el juego “Adivinando el animal”, el cual consiste en solicitar al usuario que piense en un animal. Posteriormente el programa tratará de adivinar de qué animal se trata haciendo preguntas a las que el usuario deberá contestar con “sí” o “no”. Aquí se muestra una corrida (los caracteres en azul corresponden a la entrada del usuario):
Piensa en un animal. Yo trataré de adivinar cuál es haciéndote varias preguntas. ¿Es un animal doméstico? (s/n): s ¿Es un (una) perro? (s/n): n * Escribe el nombre del animal que pensaste: toro * Escribe una afirmación que sea verdad para un (una) toro pero que sea falsa para un (una) perro: tiene cuernos ¿Deseas jugar otra vez? (s/n): s ¿Es un animal doméstico? (s/n): s ¿Tiene cuernos? (s/n): s ¿Es un (una) toro? (s/n): n * Escribe el nombre del animal que pensaste: vaca * Escribe una afirmación que sea verdad para un (una) vaca pero que sea falsa para un (una) toro: da leche ¿Deseas jugar otra vez? (s/n): s ¿Es un animal doméstico? (s/n): n ¿Es un (una) cocodrilo? (s/n): s ¡¡¡Adiviné!!! ¿Deseas jugar otra vez? (s/n): n Adiós.
Como se puede observar, el programa aprende de sus errores, de tal forma que cada vez que no acierta se incrementa su conocimiento. El programa se debe implementar utilizando un árbol binario de decisiones, en donde cada nodo interno del árbol es una pregunta y cada hoja es el nombre de un animal. A partir de las respuestas del usuario, el árbol se recorre hacia la izquierda o derecha, dependiendo si se contestó de manera positiva o negativa, respectivamente. Al llegar a una hoja, se pregunta si el animal contenido ahí fue el que se pensó. En caso de no serlo, se hacen dos preguntas que causan que el árbol crezca, agregando una nueva hoja y un nuevo nodo intermedio. La siguiente figura muestra el árbol al inicio y al final de la corrida anterior.
Debes usar un archivo binario para leer y escribir el árbol de decisión al inicio y final de la ejecución del programa, respectivamente. Esto con el fin de no perder toda la información provista por el usuario entre distintas corridas. Las notas sobre persistencia en Java explican cómo se puede hacer esto.
Si el archivo existe puedes proceder a abrirlo y leer el dato ahí contenido. Sin embargo, si el archivo no existe, entonces debes crear un árbol inicial como el del inciso (a) de la figura de arriba y continuar tu programa a partir de ahí.
Sube el archivo Examen5.java
usando el Sistema de Entrega de Tareas Automatizado. No se aceptan exámenes por ningún otro medio.
Fecha límite: Lunes, 12 de mayo.
IMPORTANTE: El archivo fuente debe incluir hasta arriba la información personal de los autores (nombre y matrícula) dentro de un comentario. Por ejemplo:
/*-------------------------------------------------------------------- * Adivinando el animal * Fecha: 12-May-2014 * Autores: * 1166611 Pepper Pots * 1160611 Anthony Stark *--------------------------------------------------------------------*/
Esta actividad será evaluada usando los siguientes criterios:
100 | La actividad cumple con todos los requerimientos. |
---|---|
-10 | No se incluyó en comentario los datos de los autores. |
10 | El programa fuente contiene errores sintácticos. |
50-90 | El programa produce algunos errores al momento de correrlo. |
DA | La solución es un plagio. |