Día de entrega: 15 de julio de 2015 al correo racc.uam@gmail.com (sólo se aceptará código fuente) Uno de los juegos infantiles más popular entre los niñospequeños es el llamado "Piedra, papel o tijeras". En este juego,dos niños escogen uno de los tres objetos anteriores: si los dosniños escogen el mismo objeto se declara un empate; en otro caso"piedra" pierde con "papel", "papel" pierde con "tijeras" y "tijeras"pierde con "piedra". Así como hay personas buenas para losvolados, hay personas buenas en este juego. Tu labor será la de escribir una función en C++ que acepte un parámetro P de tipo int y que regrese un int. El valor de retorno será 1, 2, 3, 4, o 5 según tu función escoja tirar "piedra", "papel", "tijeras", "lagarto" o "Spock" respectivamente. Por otro lado, P podrá tomar el valor 0 para indicar que es la primera ronda de una serie de juegos o los valores 1, 2, 3, 4 o 5 para indicar cuál fue la tirada anterior de tu contrincante. #include <algorithm>
#include <bitset>
#include <climits>
#include <cmath>
#include <cstdio>
#include <cstdlib> #include <cstring>
#include <functional>
#include <numeric>
using namespace std;
Tu función además deberá poder ejecutarse correctamente en el juez en línea OmegaUp y no debe usar más de 8MB de memoria. Yo escribiré algunas funciones de prueba con las que podrán compararse usando OmegaUp. Pueden descargar un código de ejemplo que se ejecuta correctamente en OmegaUp.
Al final, yo escribiré un programaque ponga a competir cada posible pareja de funciones. Un "enfrentamiento" entre dos funciones consistirá en al menos 1000 rondasconsecutivas. Si ganas una ronda se te otorgarán 3 puntos, si empatas 1 punto y si pierdes0 puntos. El ganador de un enfrentamiento no obtiene puntos adicionales; sólo obtiene la suma de los puntos obtenidos en las rondas. Tu función no competirá contra sí misma. Si tu función se ejecuta incorrectamente puede quedar descalificada; si regresa un valor ilegal perderásun punto y tu contrincante ganará 1 punto (suponiendo que él tiró algo válido). Si tu contrincante tira algo inválido, ése será el valor de P que tu función reciba en la siguiente ronda, por lo que deberán validar P para evitar que su función se comporte incorrectamente. Por cierto, yotambién escribiré algunas funciones y (aunque no pretendoganar el torneo) también competirán contra ellas. Abajoles muestro ejemplos de funciones con las propiedades que se piden eneste ejercicio. La función que sume el mayor número depuntos después de todos los enfrentamientos recibirá 30 puntos extras sobre la calificación de su tercer examen (cuyo puntaje máximo será de 35), la peor función recibirá 0 puntos y losdemás recibirán una cantidad proporcional.
|