井字遊戲是三、四歲小孩就會玩的棋賽。在一個3 列(row) x 3 行(column)的空格中,參與遊戲的兩人一個只能填入O,另一個只能填入X,兩人從頭到尾輪流填入自己的符號,誰先將自己的符號在垂直、水平或斜角方向連成3 個,誰就勝利。在此假設遊戲一開始都是填入O 的人先填。
請寫一個程式,來判斷給定任一棋局,其最後結束時(O 贏、X 贏或平手)共有幾種不同的棋盤面,而其中O 贏的棋盤面、X 贏的棋盤面、和局的棋盤面各有幾種。
例如,下圖中,最左邊的棋局,其結束時的棋盤面會有右邊四種可能。第一種O 贏,第二種平手,第三、四種都是X 贏,因此輸出(4, 1, 2, 1)。
測試檔案中共有一行,以九個連續符號表示一個棋局(完成或未完成),前三個符號代表該棋局第一列的三個格子的狀態,第四到第六個符號代表該棋局第二列的三個格子的狀態,第七到第九個符號代表該棋局第三列的三個格子的狀態。這些符號除了「O」與「X」外,以「-」來代表尚未被填入的格子。輸入檔中不會有不合理的棋局出現。
依序輸出該棋局最後可能出現的不同棋盤面數、O 贏的棋盤面數,X 贏的棋盤面數,以及平手的棋盤面數,此四個數字以空白隔開。
這題本來是檔案輸入輸出,不過在這裡請用螢幕輸入輸出。
※你應該要學會從檔案輸入輸出資料!
原TIOJ1061 / 95北市賽(prob 3)
No. | Testdata Range | Score |
---|---|---|
1 | 0 | 12 |
2 | 1 | 12 |
3 | 2 | 12 |
4 | 3 | 12 |
5 | 4 | 12 |
6 | 5 | 12 |
7 | 6 | 12 |
8 | 7 | 16 |