13428 - Connect Four (step by step)   

Description

“四子棋”是一個經典的桌上遊戲,桌面上有立著的屏風小盒子,盒子分成76列,每一欄各有一個開口可以由上方投入小圓片;遊戲開始後,兩名玩家分別持不同顏色的小圓片,並依序從開口投入圓片;圓片受地心引力影響,會落至底部或其他圓片上;當其中一名玩家讓4枚連續的小圓片,以橫著、直著、斜著的任一種方式連成一線即獲勝

(Excerpted from wiki: https://en.wikipedia.org/wiki/Connect_Four)

給定一串數字,代表依序投入白黑圓片的欄位;請試著計算是哪一方獲勝,並印出最後的結果

 

舉例

輸入字串為:4 6 4 3 3 6 4 2 3 3 4 1 1 6 5

輸出:

o wins!

- - - - - - -

- - - - - - -

- - - x o - -

- - - o o - -

- - - o o - x

- - x x o - x

 

Note:

  1. 對局一律由白方('o')先開始
  2. 輸入的字串有可能包含多餘的步數;例如上述例子(4 6 4 3 3 6 4 2 3 3 4 1 1 6 5),從第12個輸出字元(第一個1出現的地方)開始之後的步數,因為白方已經獲勝,所以可以不用繼續印在棋盤上
  3. 輸入的字串不可能包含不合理的步數,例如:將圓片投入已經滿了的欄位中不會出現平手的局面
  4. 利用字元 ‘-’ 來代表棋盤中的空格
  5. 利用字元 ‘x’ 來代表棋盤中的黑方
  6. 利用字元 ‘o’ 來代表棋盤中的白方

Input

o1 x1 o2 x2 o3 x3 o4 x4...

 

Note:

  1. 以上整數代表黑白圓片投入的欄位數
  2. 數字和數字之間以空白隔開

Output

輸出比須符合以下格式:

p wins!

c c c c c c c

c c c c c c c

c c c c c c c

c c c c c c c

c c c c c c c

c c c c c c c

 

Note:

  1. 輸出的最後必須要有一個換行符號 ('\n')
  2. p為’x’、’o’其中一個字元

Sample Input  Download

Sample Output  Download

Tags




Discuss