import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.io.File; import java.util.Scanner; public class Generala { // ESTA ES LA FUNCIÓN QUE HAY QUE IMPLEMENTAR // TAMBIÉN PUEDEN AGREGAR OTRAS FUNCIONES y/o CLASES // QUE NECESITEN PARA RESOLVER EL EJERCICIO DE LA // MANERA MÁS ORDENADA POSIBLE String jugada(String dados){ try{ //Comprueba si se recibio un numero y si el numero es negativo o igual a cero if(Integer.parseInt(dados)<=0){ return "INVALIDO"; } //Comprobamos si tiene el tamano de caracteres correspondientes if(dados.length()!=5){ return "INVALIDO"; } //Comprobamos si cada digito de la cadena es entre 1 y 6 if(!comprobarDigitos(dados)){ return "INVALIDO"; } //Convertimos a array de enteros para facilitar el proceso int[] convertido = convertirAArray(dados); //Ordenamos los dados para facilitar el resultado convertido = ordenar(convertido); //Analizamos la jugada if(generala(convertido)){ return "GENERALA"; }else if(poker(convertido)){ return "POKER"; }else if(full(convertido)){ return "FULL"; }else if(escalera(convertido)){ return "ESCALERA"; } }catch(Exception e){ return "INVALIDO"; } return "NADA"; } boolean comprobarDigitos(String dados){ for(int i = 0;i6 || Integer.parseInt("" + dados.charAt(i))==0){ return false; } } return true; } //Convierte la cadena de dados en un array para asi trabajar mejor int[] convertirAArray(String dados){ int[] resultado = new int[5]; for(int i = 0;i lines = new ArrayList(); while (sc.hasNextLine()) { lines.add(sc.nextLine()); } return lines.toArray(new String[0]); } public static void main(String[] args) throws Exception{ Generala g = new Generala(); Scanner teclado = new Scanner(System.in); /* IGNORAR PORQUE ESTO NO SE VA A EJECUTAR PARA USTEDES */ if (args.length > 0) { String[] jugadas = processBatch(args[0]); String resultados[] = g.jugadas(jugadas); for(String res : resultados) { System.out.println(res); } return; } System.out.println("Ingrese la secuencia"); String secuencia = teclado.nextLine(); // ESTO SI SE EJECUTA PARA USTEDES System.out.println(g.jugada(secuencia)); } } /* 2. Responder a las siguientes preguntas (30 puntos) 2.1. Cuál es la probabilidad de sacar generala en un tiro Utilizando la regla de laplace La probabilidad es 6 / (6^5). Es decir, 6 aciertos de (6^5) combinaciones posibles. El numero 6 del 6^5 es la cantidad de valores que soporta el dado. El numero 5 del 6^5 es la cantidad de dados que existe. 2.2. Cuál es la probabilidad de sacar poker en un tiro Utilizando la regla de laplace La probabilidad es (6*6)/(6^5). El mismo concepto que el anterior para el 6^5. Para el 6*6, existen 6 valores posibles para que exista 4 dados de mismo valor, sin tomar en cuenta el 5to dado. Para el 5to dado, hay 6 valores posibles. Por lo tanto, cada valor del 5to dado hay seis valores posibles. Multiplicando la cantidad de valores posibles del 5to dado con la cantidad de valores posibles para 4 dados iguales se obtiene el número de aciertos posibles. 2.3. Cuál es la probabilidad de sacar full en un tiro Utilizando la regla de laplace La probabilidad es (6*6)/(6^5). Lo mismo que el de sacar poker, con diferencia que hacemos que, en vez de 4 dados iguales, sean 3 dados iguales, y, en vez de un 5to dado, hacemos que sea 2 dados iguales. La cantidad de valores del 5to dado y a la cantidad de valores de 2 dados iguales tienen la misma cantidad en este caso. La cantidad de valores de 4 dados iguales y a la cantidad de 3 dados iguales tienen la misma cantidad en este caso. 2.4. Cuál es la probabilidad de sacar escalera en un tiro Para el resultado 12345, podemos obtener 4 * 4 combinaciones posibles. Para el resultado 23456, podemos obtener 4 * 4 combinaciones posibles. Para el resultado 23451, podemos obtener 4 * 4 combinaciones posibles. Para el resultado 34561, podemos obtener 4 * 4 combinaciones posibles. Para el resultado 12341, podemos obtener 4 * 4 combinaciones posibles. 4 * 4 significa 4 numeros que se pueden ubicar en 4 lugares distintos. Por ejemplo, 12345, 21345, 23145, .... En total son: 5 * (4 * 4) aciertos, donde el 5 es la cantidad de combinaciones base. Utilizando la regla de laplace, la probabilidad es: Probalidad_escalera = (5*(4*4)) / (6^5). 2.5. Cuál es la probabilidad de sacar nada en un tiro Hallando la probabilidad del complemento, en donde el complemento es "no quitar una combinación", se tiene. La probabilidad de sacar nada es: Probabilidad_Nada = 1 - Probabilidad_Generala - Probabilidad_Poker - Probabilidad_Full - Probabilidad_Escalera. 3. BONUS: (hasta 10 puntos) 3.1. Cuál es la probabilidad de sacar generala en dos tiros Utilizando la probabilidad condicionada, se obtiene: Probabilidad_dos_tiros = [6 / (6^5)] * [6 / (6^5)]. Donde la cantidad de valores que se multiplica (en este caso son dos) es igual a la cantidad de tiros. Que significa esto? Significa que para cada acierto de una generala, puede o no puede haber de nuevo una generala, y de este esta nueva generala, puede o no haber una generala, asi sicesivamente. 3.2. Cuál es la probabilidad de sacar generala en tres tiros: Utilizando la probabilidad condicionada, se obtiene: Donde la cantidad de valores que se multiplica (en este caso son tres) es igual a la cantidad de tiros. Probabilidad_tres_tiros = [6 / (6^5)] * [6 / (6^5)] * [6 / (6^5)]. Que significa esto? Significa que para cada acierto de una generala, puede o no puede haber de nuevo una generala, y de este esta nueva generala, puede o no haber una generala, asi sicesivamente. */