首页 > 试题广场 >

小红的夹吃棋

[编程题]小红的夹吃棋
  • 热度指数:2075 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}在一个 3\times3 棋盘上,小红(执黑 ``\texttt{*}``)与小紫(执白 ``\texttt{o}``)进行“夹吃棋”。

\hspace{15pt}规则:若某棋子在横向或纵向上被对方两个棋子夹住(即三连中间为对方棋子),该中间棋子被“夹吃”。

\hspace{15pt}胜负判定:
\hspace{23pt}\bullet\, 若仅一方存在被夹吃的棋子,则对方获胜;
\hspace{23pt}\bullet\, 若双方均无被夹吃,或双方均被夹吃,则为平局。

\hspace{15pt}给定若干局面,判断结果。

输入描述:
\hspace{15pt}第一行输入整数 t(询问次数)。
\hspace{15pt}每组询问输入 3 行,每行长度为 3 的字符串,仅含 ``\texttt{o}``(白子)、``\texttt{'*'}``(黑子)、``\texttt{'.'}``(未落子),表示棋盘状态。


输出描述:
\hspace{15pt}对每局输出一行:
\hspace{23pt}\bullet\, 小红胜输出 ``\text{kou}``;
\hspace{23pt}\bullet\, 小紫胜输出 ``\text{yukari}``;
\hspace{23pt}\bullet\, 平局输出 ``\text{draw}``。
示例1

输入

3
...
o*o
...
o**
ooo
..*
o*o
*o*
o*o

输出

yukari
kou
draw
t = int(input())
for i in range(t):
    matrix = []
    matrix.append(input())
    matrix.append(input())
    matrix.append(input())
    flag_hong = False
    flag_zi = False
    for j in range(3):
        if matrix[j]=='*o*' or (matrix[0][j]+matrix[1][j]+matrix[2][j])=='*o*':
            flag_hong = True
        elif matrix[j]=='o*o' or (matrix[0][j]+matrix[1][j]+matrix[2][j])=='o*o':
            flag_zi = True
    if flag_hong and not flag_zi:
        print('kou')
    elif not flag_hong and flag_zi:
        print('yukari')
    else:
        print('draw')
发表于 2025-08-24 22:40:32 回复(0)