Burju Harianja
unknown
java
a year ago
5.2 kB
11
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