题目大意:
输入棋盘。
打印两行字符串代表棋盘上棋子的位置。
其中字母的含义: "K" (King), "Q" (Queen), "R" (Rook), "B" (Bishop), "N" (Knight), or "P" (Pawn).
用 ::: 构成的格子是黑的
用 . . . 构成的格子是白的
白棋用大写,黑棋用小写。
样例:
White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4
Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6
————————————————-————————————
解题思路:
模拟大法好。
除了坐标很坑以外,没有任何难点。
AC代码:
1 import java.util.*; 2 3 public class Main{ 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(System.in); 6 while(sc.hasNext()){ 7 String map[] = new String[10]; 8 for(int i = 1;i <= 8;i ++){ 9 String edge = sc.nextLine(); 10 map[i] = sc.nextLine(); 11 } 12 String edge = sc.nextLine(); 13 14 System.out.print("White: "); 15 for(int i = 8;i >= 1;i --){ 16 for(int j = 2;j <= 30; ){ 17 if(map[i].charAt(j) == 'K'){System.out.print( "K" + (char)('a' + j / 4) + (8 - i + 1) );} 18 j = j + 4; 19 } 20 } 21 for(int i = 8;i >= 1;i --){ 22 for(int j = 2;j <= 30; ){ 23 if(map[i].charAt(j) == 'Q'){System.out.print( ",Q" + (char)('a' + j / 4) + (8 - i + 1) );} 24 j = j + 4; 25 } 26 } 27 for(int i = 8;i >= 1;i --){ 28 for(int j = 2;j <= 30; ){ 29 if(map[i].charAt(j) == 'R'){System.out.print( ",R" + (char)('a' + j / 4) + (8 - i + 1) );} 30 j = j + 4; 31 } 32 } 33 for(int i = 8;i >= 1;i --){ 34 for(int j = 2;j <= 30; ){ 35 if(map[i].charAt(j) == 'B'){System.out.print( ",B" + (char)('a' + j / 4) + (8 - i + 1) );} 36 j = j + 4; 37 } 38 } 39 for(int i = 8;i >= 1;i --){ 40 for(int j = 2;j <= 30; ){ 41 if(map[i].charAt(j) == 'N'){System.out.print( ",N" + (char)('a' + j / 4) + (8 - i + 1) );} 42 j = j + 4; 43 } 44 } 45 for(int i = 8;i >= 1;i --){ 46 for(int j = 2;j <= 30; ){ 47 if(map[i].charAt(j) == 'P'){System.out.print( "," + (char)('a' + j / 4) + (8 - i + 1) );} 48 j = j + 4; 49 } 50 } 51 System.out.println(); 52 53 System.out.print("Black: "); 54 for(int i = 1;i <= 8;i ++){ 55 for(int j = 2;j <= 30; ){ 56 if(map[i].charAt(j) == 'k'){System.out.print( "K" + (char)('a' + j / 4) + (8 - i + 1) );} 57 j = j + 4; 58 } 59 } 60 for(int i = 1;i <= 8;i ++){ 61 for(int j = 2;j <= 30; ){ 62 if(map[i].charAt(j) == 'q'){System.out.print( ",Q" + (char)('a' + j / 4) + (8 - i + 1) );} 63 j = j + 4; 64 } 65 } 66 for(int i = 1;i <= 8;i ++){ 67 for(int j = 2;j <= 30; ){ 68 if(map[i].charAt(j) == 'r'){System.out.print( ",R" + (char)('a' + j / 4) + (8 - i + 1) );} 69 j = j + 4; 70 } 71 } 72 for(int i = 1;i <= 8;i ++){ 73 for(int j = 2;j <= 30; ){ 74 if(map[i].charAt(j) == 'b'){System.out.print( ",B" + (char)('a' + j / 4) + (8 - i + 1) );} 75 j = j + 4; 76 } 77 } 78 for(int i = 1;i <= 8;i ++){ 79 for(int j = 2;j <= 30; ){ 80 if(map[i].charAt(j) == 'n'){System.out.print( ",N" + (char)('a' + j / 4) + (8 - i + 1) );} 81 j = j + 4; 82 } 83 } 84 for(int i = 1;i <= 8;i ++){ 85 for(int j = 2;j <= 30; ){ 86 if(map[i].charAt(j) == 'p'){System.out.print( "," + (char)('a' + j / 4) + (8 - i + 1) );} 87 j = j + 4; 88 } 89 } 90 System.out.println(); 91 } 92 } 93 }