[SPOJ] Problema TOE1

0 respostas
calel
Alguém aqui usa esse site? Abri um tópico no forum oficial mas até agora nada... Espero ter mais sorte aqui. O problema ( http://www.spoj.pl/problems/TOE1/ ) é bem simples, mas não sei porque não consigo uma resposta aceita... Meu código:
import java.util.Scanner;
    public class Main{
       
       public String checaJogo(String[] jogo){
          String retorno="no";
         String[][] jogoGrid = new String[3][3];
          int qtX=0, qtO=0, qtDot=0;
          for(int x = 0; x < 3; x++){
             for(int y = 0; y < 3; y++){
             jogoGrid[x][y] = String.valueOf(jogo[x].charAt(y));
                switch(jogo[x].charAt(y)){
                   case 'X': qtX++; break;
                   case 'O': qtO++; break;
                   case '.': qtDot++; break;
                }
             }
          }
          if (qtO <= qtX){
             if ((qtX - qtO) < 2){
                if((qtO + qtX + qtDot) == 9){
             int[] vitoria = checarVitoria(jogoGrid);
                                   //If X and O wins its not valid, X can win two times
                                  /* XOX
                                      OXO
                                      XOX
                                  */
                if((vitoria[0] > -1 && vitoria[1] == 0) || (vitoria[0] == 0 && vitoria[1] > -1)){
                   retorno = "yes";
                }
                }
             }
          }
         
          return retorno;
       }
       
       public int pegaJogador(String jogador){
          return (jogador.equalsIgnoreCase("X")) ? 0 : 1;
       }
       
    //Check if someone win
       public int[] checarVitoria(String[][] jogo){
          int[] vitoria= new int[2];
          vitoria[0] = 0;
          vitoria[1] = 0;
          
          String jogador="";
          if(!jogo[0][0].equals(".")){
             jogador=jogo[0][0];
             if(jogador.equals(jogo[0][1])){
                if(jogador.equals(jogo[0][2])){
                   vitoria[pegaJogador(jogador)]++;
                }
             }
             if(jogador.equals(jogo[1][1])){
                if(jogador.equals(jogo[2][2])){
                   vitoria[pegaJogador(jogador)]++;
                }
             }
             if(jogador.equals(jogo[1][0])){
                if(jogador.equals(jogo[2][0])){
                   vitoria[pegaJogador(jogador)]++;
                }
             }
             
          }
             if(!jogo[1][0].equals(".")){
                jogador = jogo[1][0];
                if(jogador.equals(jogo[1][1])){
                   if(jogador.equals(jogo[1][2])){
                      vitoria[pegaJogador(jogador)]++;
                   }
                }
             }
             if(!jogo[2][0].equals(".")){
                jogador =  jogo[2][0];
                if(jogador.equals(jogo[2][1])){
                   if(jogador.equals(jogo[2][2])){
                      vitoria[pegaJogador(jogador)]++;
                   }
                }
                if(jogador.equals(jogo[1][1])){
                   if(jogador.equals(jogo[0][2])){
                      vitoria[pegaJogador(jogador)]++;
                   }
                }
             }
             if(!jogo[0][1].equals(".")){
                jogador = jogo[0][1];
                if(jogador.equals(jogo[1][1])){
                   if(jogador.equals(jogo[2][1])){
                      vitoria[pegaJogador(jogador)]++;
                   }
                }
             }
             if(!jogo[0][2].equals(".")){
                jogador = jogo[0][2];
                if(jogador.equals(jogo[1][2])){
                   if(jogador.equals(jogo[2][2])){
                      vitoria[pegaJogador(jogador)]++;
                   }
                }
             }

          return vitoria;
       }
       
       public static void main(String[] args){
          int inputs = 0;
          String resultado="";
          String[] out;
          Main m = new Main();
          String[] jogo = new String[3];
          Scanner teclado = new Scanner(System.in);
          inputs = teclado.nextInt();
          while(inputs-- > 0){
             for(int x = 0; x < 3; x++){
                jogo[x] = teclado.next().toUpperCase();
             }
             System.out.println();
             resultado += m.checaJogo(jogo)+"-";
            // System.out.println(m.checaJogo(jogo));
          }     
          out = resultado.split("-");
          for(int x = 0; x < out.length; x++){
             System.out.println(out[x]);
          }
       }
    }
Criado 9 de maio de 2010
Respostas 0
Participantes 1