First Commit

parents
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>generala</groupId>
<artifactId>demo</artifactId>
<version>1</version>
<name>demo</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
package generala;
import java.util.Arrays;
public class Dado {
private int[] dadosActuales = new int[5];
public Dado() {
}
// ------------ Metodos ------------
public int[] getDados() {
return dadosActuales;
}
public void setDados(int[] dadosActualizados) {
this.dadosActuales = dadosActualizados;
}
public int[] generarNumerosAleatorios() {
// Funcion que genera numeros aleatorios
int[] dadosAleatorios = new int[5];
for (int i = 0; i < 5; i++) {
int randomNumber = (int) Math.floor((Math.random() * (5 + 1 - 1)) + 1);
dadosAleatorios[i] = randomNumber;
}
Arrays.sort(dadosAleatorios);
return dadosAleatorios;
}
}
package generala;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.io.File;
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) {
// Este metodo recibe un String el cual lo utilizamos en el Switch, dependiendo de que sea elvalor del
// string se ejecutara uno u otro caso
switch (dados) {
case "GENERALA" : {
System.out.println("GENERALA");
return "GENERALA";
}
case "POKER" : {
System.out.println("POKER");
return "POKER";
}
case "FULL" : {
System.out.println("FULL");
return "FULL";
}
case "ESCALERA" : {
System.out.println("ESCALERA");
return "ESCALERA";
}
default : {
System.out.println("NADA");
return "NADA";
}
}
}
// Ustedes pueden ignorar esto
String[] jugadas(String[] losdados) {
String[] ret = new String[losdados.length];
int i = 0;
for (String dados : losdados) {
ret[i] = this.jugada(dados);
i++;
}
return ret;
}
// Ustedes pueden ignorar esto
static String[] processBatch(String fileName)
throws Exception {
Scanner sc = new Scanner(new File(fileName));
List<String> lines = new ArrayList<String>();
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();
/* 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;
}
// ESTO SI SE EJECUTA PARA USTEDES
// -----------------------------------------------------
// Generar los numeros aleatorios
// Instanciamos el objeto Dadopara utilizar sus metodos
Dado dados1 = new Dado();
// En el metodo "setDados" modficamos el valor actual de la variable; pasandole
// como argumento el objeto "dados1" con su metodo "generarNumerosAleatorios"
// "generarNumerosAleatorios" devolvera un array de enteros con numeros aleatorios
dados1.setDados(dados1.generarNumerosAleatorios());
// Obtenemos los dados aleatorios y los guardamos en el array "dadosAleatorios"
int[] dadosAleatorios = dados1.getDados();
// Se imprimen los dados para poder comprar con el resultado arrojado luego
for (int i = 0; i < dadosAleatorios.length; i++) {
System.out.print(" [" + dadosAleatorios[i] + "] ");
}
//Instanciamos el objeto "jugada1" para ejecutar las comprobaciones
Jugada jugada1 = new Jugada();
//Llamamos al metodo tiro pasandole como argumento los dados que se generaron
jugada1.tiro(dadosAleatorios);
//"g" es un objeto de la clase Generala que ejecutara el metodo jugada.
//Le paso como parametro el string de la variabe de la clase Jugada
g.jugada(jugada1.getJugada1());
}
}
package generala;
public class Jugada {
// Instanciamos la variable "jugada" como "NADA"; porque al ejecutarse los metodos de comprobacion, si ninguno actualiza esta
// variable con su respectivo valor como "GENERALA", "POKER", etc. Significa que no cumplio con ninguna de las jugadas y debe
// quedarse como "NADA"
private String jugada1 = "NADA";
//Constructor para instanciar un objeto Jugada y usar sus metodos
public Jugada() {
}
public String getJugada1() {
// retorna la variable de instancia actual
return this.jugada1;
}
public void setJugada1(String jugada1) {
// Modifica la variable de instancia actual con el parametro que se le pase
this.jugada1 = jugada1;
}
// ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "GENERALA" ------
public void generala(int[] dados) {
int contador = 0;
for (int i = 0; i < dados.length - 1; i++) {
// En caso de que el dado en la posicion "i" sea igual al dado en la posicion siguiente
// el contador aumenta en uno
if (dados[i] == dados[i + 1]) {
contador++;
}
}
// Si el contador llego a 4 es porque todas las comparaciones entre dados fueron iguales
// Entonces se actualiza la variable de instancia
if (contador == 4) {
setJugada1("GENERALA");
}
}
// ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "POKER" ------
public void poker(int[] dados) {
// IMPORTANTE: El metodo poker funciona igual que GENERALA con la diferencia de que el contador debe llegar a 3 para ser POKER
int contador = 0;
for (int i = 0; i < dados.length - 1; i++) {
if (dados[i] == dados[i + 1]) {
contador++;
}
}
// Al estar el array ordenado de mayor a menor solo hay 2 opciones de POKER
// Una seria el numero menor al principio y otra el numero mayor al final
// En los dos casos los numeros en la posicion 1, 2, 3 son iguales
// por eso se realiza la comprobacion ademas de que el contador sea 3
// array1 = [ 4, 5, 5, 5, 5 ]
// array2 = [ 4, 4, 4, 4, 5 ]
if (contador == 3 && dados[1] == dados[2] && dados[2] == dados[3]) {
setJugada1("POKER");
}
}
// ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "FULL" ------
public void full(int[] dados) {
// IMPORTANTE: El metodo "full" funciona igual que GENERALA con la diferencia de que el contador debe llegar a 3 para ser POKER
int contador = 0;
for (int i = 0; i < dados.length - 1; i++) {
if (dados[i] == dados[i + 1]) {
contador++;
}
}
// Al estar el array ordenado de mayor a menor solo hay 2 opciones de FULL
// El numero en la posicion 2 es diferente al de la posicion anterior
// y tambien puede ser diferente a de la posicion siguiente
// array1 = [ 4, 4, 5, 5, 5 ]
// array2 = [ 4, 4, 4, 5, 5 ]
if (contador == 3 && dados[1] != dados[2]) {
setJugada1("FULL");
} else if (contador == 3 && dados[2] != dados[3]) {
setJugada1("FULL");
}
}
// ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "ESCALERA" ------
public void escalera(int[] dados) {
int contador = 0;
for (int i = 0; i < dados.length - 1; i++) {
//Si el dado en la posicion [0] es 1 y le sumas 1, el resultado debe ser igual al dado de la posicion siguiente
if (dados[i] + 1 == dados[i + 1]) {
contador++;
}
}
if (contador == 4) {
this.jugada1 = "ESCALERA";
}
}
// ------ Comprueba si los numeros aleatorios de un array cumplen las caracteristicas de "POKER" ------
public void tiro(int[] dados) {
// Se ejecuta todos los metodos de comprobacion
generala(dados);
poker(dados);
full(dados);
escalera(dados);
}
}
package generala;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Unit test for simple App.
*/
public class AppTest
{
/**
* Rigorous Test :-)
*/
@Test
public void shouldAnswerWithTrue()
{
assertTrue( true );
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment