d368. 10196 - Check the Check
標籤 :
通過比率 : 151人/178人 ( 85% ) [非即時]
評分方式:
Tolerant

最近更新 : 2010-08-25 15:52

內容

你的任務是寫一個程式,讀入一西洋棋盤的狀態,然後回答是否有國王(king)正處於可以攻擊(check)的狀態。

(像中國象棋的"將軍")

白方以大寫字元來表達各個角色,黑方以小寫字元來表達各個角色。棋賽一開始時白方在棋盤下方,黑方在棋盤上方。

如果你對西洋棋不熟的話,以下是各棋子角色的說明:

  • Pawn(士兵,以p或P表示)一次只能往前走一步,但是攻擊時卻是往左前方或右前方一格攻擊。
  • Knight(騎士,以n或N表示)走法比較特別,是走L形的,像中國象棋的馬,參考下面的圖。
  • Bishop(主教,以b或B表示)可以走對角線任意格。
  • Rook(城堡,以r或R表示)可以走直線任意格。
  • Queen(皇后,以q或Q表示)可以走對角線及直線任意格。像Bishop及Rook的綜合體。
  • King(國王,以k或K表示)可以走前後左右及對角線一格。

下圖就是各棋子的走法(*表示該棋子可以攻擊的格子)

 

Pawn
........
........
........
........
...p....
..*.*...
........
........
Rook
...*....
...*....
...*....
...*....
***r****
...*....
...*....
...*....
Bishop
.......*
*.....*.
.*...*..
..*.*...
...b....
..*.*...
.*...*..
*.....*.
Queen
...*...*
*..*..*.
.*.*.*..
..***...
***q****
..***...
.*.*.*..
*..*..*.
King
........
........
........
..***...
..*k*...
..***...
........
........
Knight
........
........
..*.*...
.*...*..
...n....
.*...*..
..*.*...
........

 

記住:只有騎士可以跨過棋子攻擊,而士兵的攻擊是有方向性的

(白士兵只能向左上、右上攻擊,黑士兵只能向左下、右下攻擊)

輸入說明

每組測試資料8列,每列有8個字元。

'.' 代表空白格子而其他英文字元則代表上面說明的各角色。

不會有不該出現的字元出現,而且我們也保證不會有黑白雙方的國王均處於被check的狀態。

測試資料間有一空白列。輸入的最後一組測試資料內容全為'.',代表輸入結束。

(此組測試不需有輸出)

輸出說明

每組測試資料請輸出下列3種其中之一:

Game #d: white king is in check.
Game #d: black king is in check.
Game #d: no king is in check.

這裡d代表第幾組測試資料,從1開始。

範例輸入 #1
..k.....
ppp.pppp
........
.R...B..
........
........
PPPPPPPP
K.......

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

rnbqk.nr
ppp..ppp
....p...
...p....
.bPP....
.....N..
PP..PPPP
RNBQKB.R

........
........
........
........
........
........
........
........
範例輸出 #1
Game #1: black king is in check.
Game #2: no king is in check.
Game #3: white king is in check.
測資資訊:
記憶體限制: 512 MB
提示 :
標籤:
出處:
UVa10196 [管理者:
Unknown User
]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」