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 (5 * 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 dado restante. Para el dado restante, hay 6 valores posibles. Por lo tanto, cada valor del dado restante hay seis valores posibles. Pero ocurre lo siguiente: el dado con el valor distinto puede colocarse en 5 lugares distintos. Por lo tanto, son (5 * 6 * 6) de aciertos posibles. 2.3. Cuál es la probabilidad de sacar full en un tiro Utilizando la regla de laplace La probabilidad es ((5 - 1) * (5 - 4)) * (6 * 6))/(6^5). Para el 6 * 6, existen 6 valores posibles para que exista 3 dados de mismo valor, sin tomar en cuenta los dos dados restantes. Existen 6 valores para que ambos ultimos dos dados tengan el mismo valor. Pero ocurre que: de esos dos dados iguales, un dado va a recorrer (5 - 1) lugares posibles, porque el otro dado tiene el mismo valor. Para el otro dado solo va a necesitar moverse (5 - 4) lugares, ya que los movimiento del segundo dado genera un mismo valor con la posición del otro dado (por ejemplo: 33311, 33113, 31133 y 11333), moviendo el primer dado. Por lo tanta, se tiene ((5 - 1) * (5 - 4)) * (6 * 6)) aciertos 2.4. Cuál es la probabilidad de sacar escalera en un tiro Para el resultado 12345, podemos obtener 5 * 5 combinaciones posibles. Para el resultado 23456, podemos obtener 5 * 5 combinaciones posibles. Para el resultado 23451, podemos obtener 5 * 5 combinaciones posibles. Para el resultado 34561, podemos obtener 5 * 5 combinaciones posibles. Para el resultado 12341, podemos obtener 5 * 5 combinaciones posibles. 5 * 5 significa 5 dados que se pueden ubicar en 5 lugares distintos. Por ejemplo, 12345, 21345, 23145, .... En total son: 5 * (5 * 5) aciertos, donde el 5 fuera del parentesis es la cantidad de combinaciones base. Utilizando la regla de laplace, la probabilidad es: Probalidad_escalera = (5*(5*5)) / (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. */