/* * En esta clase se generan todas las manos de cartas posibles. * Obtiene un conjunto de 7 cartas (llamado "cartas en la mesa"), y genera combinaciones de 5 cartas * El conjunto de cartas tambien se carga manualmente (cargar cartas en la mesa manual) * */ package mejorCombinacion; import java.util.ArrayList; import com.roshka.bootcamp004.mano.*; public class Combinaciones { Carta [][] combinaciones; Carta[] cartasEnlaMesa; public Combinaciones() { this.combinaciones = new Carta[2520][5];//Variable donde carga todas las combinaciones de carta Mano mano = new Mano(); this.cartasEnlaMesa = (new ClasificadorMano()).ordenarCartasValor(mano.aArrayTipoCarta()); //Imprime las cartas System.out.println("Las cartas de la mesa son:"); System.out.println(mano.aCadena()); //Cargamos las combinaciones this.cargarManosPosibles(); } //Este metodo carga las manos de cartas private void cargarManosPosibles() { ArrayList> pos_combinaciones = this.generarCombinaciones(); //Ahora vamos a cargar las cartas for(int i=0;i> generarCombinaciones() { //Carga la combinacion actual ArrayList combinacion; //Carga las combinaciones posibles ArrayList> resultado = new ArrayList<>(); //Numero base para hallar la combinacion por medio de la division int numero = 16806; //Numero necesario para hallar todas las combinaciones posibles int numero_base = numero; //Actua mientras exista combinaciones posibles while(numero_base>=0) { combinacion = new ArrayList<>();//Creamos una carga de combinacion while(numero>=7) {//Carga las combinaciones mientras la dividendo sea mayor a 7 combinacion.add(numero%7);//Carga el resto numero = numero/7;//Realiza la division } combinacion.add(numero);//Carga el numero menor al 7 while(combinacion.size()<5) {//Comprueba si aun hay lugar en el bloque, y los carga con cero combinacion.add(0); } resultado.add(combinacion);//Carga la combinacion numero_base = numero_base -1;//Creamos la base para la siguiente combinacion numero = numero_base; } //Esto sirve para simplificar las combinaciones //Se coloca 2521, porque la permutacion de 7 elementos que se desea armar 5 combinaciones sin importar la posicion //da como resultado 2520 while(resultado.size()>2521){ for(int k = 0;k indice = resultado.get(k); boolean valido = true; for(int i = 0;i