Generala.java 3.77 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.io.File;

public class Generala
{
	//
	//
	//
	// 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)
	{
		//System.out.println(dados.charAt(0));
		
		//comprobar que sean 5 valores
		if(dados.length() != 5){
			return "INVALIDO";
23
		}		
24 25 26 27 28 29 30 31 32 33 34 35 36 37
		
		//array para tener la cantidad de apariciones de un número
		int[] cantidad = {0, 0, 0, 0, 0, 0};
		for(int i=0; i<dados.length(); i++){
			// para castear char a int
			int index = dados.charAt(i) - 48; 
			
			//comprueba que los valores sean válidos, del 1 al 6
			if(index<1 || index>6){
				return "INVALIDO";
			}
			cantidad[index-1]++;
		}

38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
		boolean bandera=true;
		System.out.print(cantidad[0]+"|"+cantidad[1]+"|"+cantidad[2]+"|"+cantidad[3]+"|"+cantidad[4]+"|"+cantidad[5]);
		System.out.println();

		//Comprueba la escalera 12345
		for (int i = 0; i < 5; i++) {
			if(cantidad[i]!=1){
				bandera=false;
				break;
			}
		}
		if(bandera){
			return "ESCALERA";
		}

		bandera=true;
		//Comprueba la escalera 23456
		for (int i = 1; i < 6; i++) {
			if(cantidad[i]!=1){
				bandera=false;
				break;
			}
		}
		if(bandera){
			return "ESCALERA";
		}

		bandera=true;
		//Comprueba la escalera 34561
		for (int i = 2; i < 6; i++) {
			if(cantidad[i]!=1){
				bandera=false;
				break;
			}
		}
		if(cantidad[0]!=1){
			bandera=false;
		}
		if(bandera){
			return "ESCALERA";
		}		

80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
		//calcula el máximo del vector cantidad
		int max = maximo(cantidad);
		//System.out.println(max);

		if(max==5){
			return "GENERALA";
		}

		if(max == 4){
			return "POKER";
		}

		if(max==3){
			cantidad[indiceDe(cantidad,max)] = 0;
			max = maximo(cantidad);
			if(max==2){
				return "FULL";
			}
		}		
		return "NADA";
	}

	//encuentra el valo máximo de un array
	int maximo(int[] input){
		int max=-1;
		for(int i=0; i<input.length; i++){
			if(input[i]>max){
				max = input[i];
			}
		}
		return max;
	}

	//encuentra el índice de un elemento
	int indiceDe(int[] input, int elemento){
		
		for (int i = 0; i < input.length; i++) {
			if(input[i]==elemento){
				return i;
			}
		}
		//retorna -1 si no lo encuentra
		return -1;
	}

	/*
	// 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

		/*
		System.out.println(g.jugada("12345")); //ESCALERA
		System.out.println(g.jugada("23456")); //ESCALERA
		System.out.println(g.jugada("34561")); //ESCALERA
		System.out.println(g.jugada("22222")); //GENERALA
		System.out.println(g.jugada("23223")); //FULL
		System.out.println(g.jugada("43434")); //FULL
		System.out.println(g.jugada("43435")); //NADA
		System.out.println(g.jugada("2322"));  //INVALIDO
		System.out.println(g.jugada("232823"));//INVALIDO
		System.out.println(g.jugada("23A23")); //INVALIDO
		System.out.println(g.jugada("55155")); //POKER
		*/
179
		
180 181 182


	}
183
}