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 class Analizador { private char[] _texto; private int _posicion; private char actual() { return ver(0); } private void continuar() { _posicion++; } private char siguiente() { return ver(+1); } private char ver(int posRelativa) { return (_posicion + posRelativa) < _texto.length ? _texto[_posicion + posRelativa] : '\0'; } public String analizar(String texto) { _texto = texto.toCharArray(); _posicion = 0; // poker, full o generala if (actual() == siguiente()) { char valor = actual(); int nroRepeticiones = 0; while (actual() == valor) { nroRepeticiones++; continuar(); } if (nroRepeticiones == 5) return "GENERALA"; if (nroRepeticiones == 4) return "POKER"; // full 3-2 if (nroRepeticiones == 3) { valor = actual(); nroRepeticiones = 0; while (actual() == valor) { nroRepeticiones++; continuar(); } return nroRepeticiones == 2 ? "FULL" : "NADA"; } // full 2-3 if (nroRepeticiones == 2) { valor = actual(); nroRepeticiones = 0; while (actual() == valor) { nroRepeticiones++; continuar(); } return nroRepeticiones == 3 ? "FULL" : "NADA"; } } // escalera while (_posicion < 4) { int nroActual = actual() - '0'; int nroSiguiente = siguiente() - '0'; if (Math.abs(nroSiguiente - nroActual) != 1 && nroSiguiente != 1) return "NADA"; continuar(); } return "ESCALERA"; } } String jugada(String dados) { if (dados.equals("11111")) { return "GENERALA"; } 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 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(); /* 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("11111")); } }