トラック
/
Python
Python
/
演習
/
囲碁の得点計算
囲碁の得点計算

囲碁の得点計算

中級

説明

碁盤上の得点を数えましょう。

囲碁(baduk、igo、cờ vây、wéiqíとも呼ばれます)では、空点を自分の石で完全に囲むと得点が得られます。プレイヤーが囲んだ交点は、そのプレイヤーの陣地と呼ばれます。

各プレイヤーの陣地を計算してください。敵の陣地に取り残された石は、すでに盤上から取り除かれているとみなしてかまいません。

指定された座標を含む陣地を求めてください。

複数の空点が同時に囲まれることもあります。囲むとみなされるのは、上下左右に隣り合う点だけです。次の図では、関係する石を「O」、関係しない石を「I」(ignored)で示しています。空白は空点を表します。

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

より正確には、こう言えます。ある空点に隣り合う点がすべて、そのプレイヤーの石であるか、そのプレイヤーの陣地に含まれる空点であるなら、その空点もそのプレイヤーの陣地の一部です。

詳しくは、WikipediaやSensei's Libraryをご覧ください。

例外メッセージ

例外を送出する必要がある場合があります。そのときは、エラーの原因が何であるかを示す意味のあるエラーメッセージを必ず含めるようにしましょう。これにより、コードが読みやすくなり、デバッグがとても楽になります。エラーの原因がある型だとわかっている場合は、組み込みのエラー型のいずれかを送出する方法もありますが、その場合も意味のあるメッセージを含めるようにしましょう。

この演習では、無効な座標が与えられたときに、raise文を使ってValueErrorを「送出」する必要があります。テストに合格するには、exceptionをraiseし、かつメッセージを含める必要があります。

メッセージ付きでValueErrorを送出するには、そのメッセージをexception型の引数として書きます。

# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Python Exercism

囲碁の得点計算を始める準備はできましたか?

Exercismに登録すれば、17個のコンセプト146個の演習、そして本物の人間によるメンタリングとともに、Pythonを学んでマスターできます。すべて無料です。