From db6481d4536d45093ec49d7cbe33c66575d151a2 Mon Sep 17 00:00:00 2001 From: roshka Date: Thu, 18 Oct 2018 17:01:43 -0300 Subject: [PATCH] Ejercicio resuelto del documento java-e003.pdf --- Generala.java | 264 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 7 +++++++ 2 files changed, 271 insertions(+) create mode 100644 Generala.java create mode 100644 README.md diff --git a/Generala.java b/Generala.java new file mode 100644 index 0000000..a3fdf0d --- /dev/null +++ b/Generala.java @@ -0,0 +1,264 @@ +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. + +*/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f153aae --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Indicaciones +El programa pide al usuario que ingrese por el teclado el resultado de la tirada de los dados. +Retorna la jugada de la tirada en la pantalla, como se indica en el ejercicio. + +Las respuestas de las preguntas de probabilidad están al final de codigo de java como comentario, dentro del archivo Generala.java. + + \ No newline at end of file -- libgit2 0.26.0