题解 | 小红的夹吃棋
小红的夹吃棋
https://www.nowcoder.com/practice/94648fd37a644c76adb2adb29c2a3037
只需要判断中间的行列,判断是否存在夹吃情况,然后输出结果
import java.util.*;
import java.io.*;
import java.math.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int q = Integer.parseInt(br.readLine());
while (q-- > 0) {
String[] board = new String[3];
for (int i = 0; i < 3; i++) {
board[i] = br.readLine();
}
boolean blackEaten = false; // 小红(黑子)是否被吃
boolean whiteEaten = false; // 小紫(白子)是否被吃
// 检查所有位置
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
char c = board[i].charAt(j);
if (c == '.') continue;
// 检查横向夹吃
if (j > 0 && j < 2) { // 中间位置
char left = board[i].charAt(j - 1);
char right = board[i].charAt(j + 1);
if (c == '*' && left == 'o' && right == 'o') {
blackEaten = true; // 黑子被两个白子夹住
} else if(c == 'o' && left == '*' && right == '*'){
whiteEaten = true; // 白子被两个黑子夹住
}
}
// 检查纵向夹吃
if (i > 0 && i < 2) { // 中间位置
char up = board[i-1].charAt(j);
char down = board[i+1].charAt(j);
if (c == '*' && up == 'o' && down == 'o') {
blackEaten = true;
} else if (c == 'o' && up == '*' && down == '*') {
whiteEaten = true;
}
}
}
}
// 胜负判断
if (blackEaten && !whiteEaten) {
System.out.println("yukari"); // 小红被吃,小紫胜
} else if (!blackEaten && whiteEaten) {
System.out.println("kou"); // 小紫被吃,小红胜
} else {
System.out.println("draw"); // 都吃或都不吃
}
}
}
}