連線

連線

困難

說明

計算一場 Hex/Polygon 對局的結果。

這款名為 Hex/Polygon/CON-TAC-TIX 的抽象棋類遊戲,規則相當簡單,實際玩起來卻很複雜。 兩位玩家在由六邊形格子排成的平行四邊形上放置棋子。 先把自己的棋子連到對邊的玩家獲勝。 平行四邊形的四條邊由兩位玩家平分(也就是說,一位玩家分到一條邊以及它正對面的那條邊,另一位玩家則分到另外兩條邊)。

你的目標是寫一個程式,在給定棋盤的簡單表示之後,算出贏家(或是沒有贏家)。 注意,並非每一場對局都是「公平」的。 (例如,兩位玩家的棋子數量可能不一樣,或是棋盤的寬度和高度可能不相等。)

棋盤看起來像這樣:

. O . X .
 . X X O .
  O O O X .
   . X O X O
    X O O O X

「玩家O」從上到下連線,「玩家X」從左到右連線。 在上面的例子裡,O已經從左到右連成一條線,但還沒有人獲勝,因為O沒有把上下兩邊連起來。

各軌道專屬指示

你可能會注意到,有些測試案例似乎不太公平。 不過,它們其實有可能真的就是這樣。 舉例來說,讓新手或初學者玩家在盤面上固定的位置多拿 n 顆棋子是很常見的做法,所以在一場其他方面都完全合法的對局裡,棋子數量不一致是有可能發生的。

總之,這個練習只在乎判斷一場有著各種參數(例如盤面長度和額外棋子)的對局誰輸誰贏。 它對對局的其他狀態一概不感興趣,例如誰在哪裡移動了、什麼時候移動的,或是輪到誰。

所以,別被那些看似不公平的對局搞糊塗了。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Scala Exercism

準備好開始 連線 了嗎?

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