皇后攻擊

皇后攻擊

中等

說明

給定西洋棋棋盤上兩個皇后的位置,判斷它們的擺法是否讓彼此能互相攻擊。

在西洋棋中,皇后可以攻擊位於同一行、同一列或同一條對角線上的棋子。

棋盤可以用 8 乘 8 的陣列來表示。

所以,如果有人告訴你白色皇后在 c5(索引從 0 開始,也就是第 2 列、第 3 行),黑色皇后在 f2(第 5 列、第 6 行),你就能知道局面是這樣擺的:

一個有兩個皇后的棋盤。從 c5 的皇后向外射出的箭頭,指出沿著列、行與對角線可能的吃子方向。

你也可以回答這兩個皇后是否能互相攻擊。 在這個例子中,答案是肯定的,它們能互相攻擊,因為這兩個棋子位於同一條對角線上。

致謝

棋盤圖片由 habere-et-dispertire 使用 LaTeX 與 Ulrike Fischer 的 chessboard 套件 製作。

提示

要完成這道練習,你需要實作下列函式:

  • boardString
  • canAttack

型別簽章已經幫你準備好了,但這些函式要由你來定義喔。

位置以二元組表示:

  • 第一個元素是列(西洋棋中的 rank)。
  • 第二個元素是欄(西洋棋中的 file)。
  • (0, 0) 是棋盤的左上角,(0, 7) 是右上角,
  • (7, 0) 是左下角,(7, 7) 是右下角。
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Haskell Exercism

準備好開始 皇后攻擊 了嗎?

註冊 Exercism,透過 107 個練習 和真人引導來學習並精通 Haskell,全部免費。