Burju Harianja
unknown
java
9 months ago
5.2 kB
9
Indexable
package Task2; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(Main.class.getResourceAsStream("board.txt")); int tc = sc.nextInt(); for(int n = 0;n < tc;n++){ int [][] board = new int[8][8]; char [][] newBoard = new char[8][8]; int[] queen = new int[2]; int[] pawn = new int[2]; for(int i = 0;i<8;i++){ for(int j = 0;j<8;j++){ board[i][j] = sc.nextInt(); if(board[i][j] == 1){ queen[0] = i; queen[1] = j; } if(board[i][j] == 2) { pawn[0] = i; pawn[1] = j; } } } boolean threatenedHorizontal = false; boolean threatenedVertical = false; boolean threatenedDiagonal = false; // check the horizontal threat if(queen[0] == pawn[0]){ threatenedHorizontal = true; } // check the vertical threat else if(queen[1] == pawn[1]){ threatenedVertical = true; } // check the diagonal threat else if(Math.abs(queen[0] - pawn[0]) == Math.abs(queen[1] - pawn[1])){ threatenedDiagonal = true; } // Generate output if(threatenedHorizontal || threatenedDiagonal || threatenedVertical){ System.out.println("YES"); for(int i = 0;i<8;i++){ for(int j = 0;j<8;j++){ newBoard[i][j] = '0'; newBoard[queen[0]][queen[1]] = 'Q'; newBoard[pawn[0]][pawn[1]] = 'P'; if(threatenedHorizontal){ if(i == queen[0] && (queen[1] < pawn[1])){ if(j > queen[1] && j < pawn[1]){ newBoard[i][j] = 'X'; } } else if(i == queen[0] && (queen[1] > pawn[1])){ if(j > pawn[1] && j < queen[1]){ newBoard[i][j] = 'X'; } } } else if(threatenedVertical){ if(j == queen[1] && (queen[0] < pawn[0])){ if(i < pawn[0] && i > queen[0]){ newBoard[i][j] = 'X'; } } else if(j == queen[1] && (queen[0] > pawn[0])){ if(i > pawn[0] && i < queen[0]){ newBoard[i][j] = 'X'; } } } else if(threatenedDiagonal){ // Left diagonal if(queen[0] - pawn[0] == queen[1] - pawn[1]){ if(queen[0] > pawn[0]){ int startCol = pawn[1] + 1; for(int startRow = pawn[0] + 1;startRow < queen[0];startRow++){ newBoard[startRow][startCol] = 'X'; startCol++; } } else { int startCol = queen[1] + 1; for(int startRow = queen[0] + 1;startRow < pawn[0];startRow++){ newBoard[startRow][startCol] = 'X'; startCol++; } } } // Right diagonal else{ if(queen[0] < pawn[0]){ int startCol = queen[1]-1; for(int startRow = queen[0]+1;startRow<pawn[0];startRow++){ newBoard[startRow][startCol] = 'X'; startCol--; } } else { int startCol = pawn[1]-1; for(int startRow = pawn[0]+1;startRow<queen[0];startRow++){ newBoard[startRow][startCol] = 'X'; startCol--; } } } } System.out.print(newBoard[i][j] + "\t"); } System.out.println(); } } else System.out.println("NO"); } } }
Editor is loading...
Leave a Comment