Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Arrays;
- import java.util.ArrayList;
- import java.util.List;
- import java.io.BufferedReader;
- public class JavaPunt {
- public static void main(String[] args){
- ArrayList<ArrayList<String>> listaPartidas= leerEntrada();
- for( ArrayList<String> DatosPartida: listaPartidas){
- EjecutarPartida(DatosPartida);
- }
- }
- private static ArrayList<ArrayList<String>> leerEntrada() {
- // TODO Auto-generated method stub
- ArrayList<ArrayList<String>> listaPartidas = new ArrayList<ArrayList<String>>();
- ArrayList<String> DatosPartida = new ArrayList<String>();
- try{
- BufferedReader lee = new BufferedReader(new InputStreamReader(System.in));
- while(true){
- String cadena = lee.readLine();
- if(cadena.equalsIgnoreCase("0")){
- if(DatosPartida.size() > 0){
- listaPartidas.add(DatosPartida);
- }
- break;
- } else {
- if(cadena.length() == 1 || cadena.length() == 2){
- if (DatosPartida.size() > 0){
- listaPartidas.add((ArrayList<String>)DatosPartida.clone());
- DatosPartida.clear();
- }
- DatosPartida.add(cadena);
- } else {
- DatosPartida.add(cadena);
- }
- }
- }
- }
- catch(IOException e){
- System.err.println("Error: " + e.getMessage());
- }
- return listaPartidas;
- }
- private static void EjecutarPartida(ArrayList<String> datosPartida) {
- String tablero[][] = null;
- ArrayList<String[][]> listaTablero = new ArrayList<String[][]> ();
- int NumeroMovimiento = 1;
- int CeroTablero = 0;
- for (String data: datosPartida){
- if(data.length()==1 || data.length()==2 ){
- CeroTablero = Integer.valueOf(data);
- if (CeroTablero>50||CeroTablero<2){
- System.out.println("tamaño del tablero erroneo, el tablero tiene que se > que 1 y < de 51");
- System.exit(0);
- } else {
- tablero = new String [CeroTablero][CeroTablero];
- String[][] tableroCopia = CopiarTablero(tablero);
- listaTablero.add(tableroCopia);
- }
- } else {
- String[] arrayDatos = data.split(" ");
- int fila = Integer.valueOf(arrayDatos[0]);
- int columna = Integer.valueOf(arrayDatos[1]);
- if(arrayDatos[2].equalsIgnoreCase("-")){
- tablero[fila - 1][columna - 1] = null;
- } else {
- tablero[fila - 1][columna - 1] = arrayDatos[2];
- }
- boolean reppattern = tableroExist(tablero, listaTablero);
- if(reppattern == true){
- int numPlayerAct;
- int numPlayerWin;
- if (NumeroMovimiento % 2 == 0){
- numPlayerAct = 2;
- numPlayerWin = 1;
- }else{
- numPlayerAct = 1;
- numPlayerWin = 2;
- }
- System.out.println("El jugador " + numPlayerWin + " ganaría en el movimiento " + NumeroMovimiento);
- return;
- } else{
- String[][] tableroCopia = CopiarTablero(tablero);
- listaTablero.add(tableroCopia);
- NumeroMovimiento++;
- }
- }
- }
- if(2 * CeroTablero == NumeroMovimiento - 1){
- System.out.println("Empate");
- } else{
- System.out.println("Error");
- }
- }
- private static boolean tableroExist(String[][] tablero,
- ArrayList<String[][]> listaTablero) {
- boolean result = false;
- for (String[][] tableroExist: listaTablero){
- result = Arrays.deepEquals(tableroExist, tablero);
- if (result==true){
- return true;
- }
- tableroExist = girar(tableroExist);
- result = Arrays.deepEquals(tableroExist, tablero);
- if (result==true){
- return true;
- }
- tableroExist = girar(tableroExist);
- result = Arrays.deepEquals(tableroExist, tablero);
- if (result==true){
- return true;
- }
- }
- return false;
- }
- private static String[][] girar(String[][] matriz) {
- String[][] MatrizRotada = new String[matriz.length][matriz[0].length];
- int CeroMatriz = matriz.length;
- for (int i = 0; i < CeroMatriz; ++i){
- for (int j = 0; j < CeroMatriz; ++j){
- MatrizRotada[i][j] = matriz[(CeroMatriz - 1) - j][i];
- }
- }
- return MatrizRotada;
- }
- private static String[][] CopiarTablero(String[][] tablero) {
- String[][] tableroCopia = new String[tablero.length][tablero.length];
- for(int h=0;h<tablero.length;h++){
- for(int z=0;z<tablero.length;z++){
- tableroCopia[h][z] = tablero[h][z];
- }
- }
- return tableroCopia;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement