學習軌道
/
Python
Python
/
練習
/
圍棋計數
圍棋計數

圍棋計數

中等

說明

計算圍棋棋盤上的得分。

在圍棋(也稱 baduk、igo、cờ vây 和 wéiqí)中,用你的棋子把空的交叉點完全包圍起來就能得分。一位玩家所包圍的交叉點稱為他的領地。

計算每位玩家的領地。 你可以假設,任何滯留在對方領地中的棋子都已經從棋盤上移除了。

判斷包含指定座標的領地。

一次可以包圍多個空的交叉點,而且包圍時只有水平和垂直方向的相鄰點才算數。 在下圖中,重要的棋子標為「O」,不重要的棋子標為「I」(忽略)。空白處代表空的交叉點。

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

更精確地說,一個空的交叉點屬於某位玩家的領地,若它的所有相鄰點都是該玩家的棋子,或是同樣屬於該玩家領地的空交叉點。

更多資訊請見 維基百科 或 Sensei's Library。

例外訊息

有時候,我們需要引發例外。這麼做的時候,你應該一律附上有意義的錯誤訊息,指出錯誤的來源。這能讓你的程式碼更好讀,對除錯也有很大的幫助。如果你知道錯誤來源會是某種特定的型別,可以選擇引發內建的錯誤型別之一,但還是要附上有意義的訊息。

這個練習要求你使用 raise 敘述,在收到無效的座標時「拋出」ValueError。唯有同時 raise 這個 exception 並附上訊息,測試才會通過。

若要引發帶有訊息的 ValueError,請把訊息當作引數傳給 exception 型別:

# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 圍棋計數 了嗎?

註冊 Exercism,透過 17 個概念146 個練習 和真人引導來學習並精通 Python,全部免費。