5行5列の五目並べの盤面が与えられます。
盤面の各マスには、"O"か"X"か"."が書かれています。
"O"と"X"は、それぞれプレイヤーの記号を表します。
同じ記号が縦に連続で5つ並んでいれば、その記号のプレイヤーが勝者となります。
勝者の記号を1行で表示してください。
勝者がいない場合は、引き分けとして、"D"を表示してください。
Python
1board = [] 2result ='D' 3for i in range(5): 4 board.append(input()) 5 6for i in range(5): 7 pivot = '' ..........**①** 8 count = 0 9 10 for j in range(5): 11 stone = board[j][i] 12 13 if pivot =='': ...........**②** 14 pivot = stone ..........**③** 15 16 if stone != '.' and stone == pivot: ..........**④** 17 count +=1 18 else: 19 break 20 21 if count == 5: 22 result = pivot 23 break 24 25print(result)
入力例1
XXOXO
OXOXX
OOOOO
OXOX.
XOXXO
出力例1
D
入力例2
O.O.X
OXX.X
O.X.X
OO..X
X.XOX
出力例2
X
stone = board[j][i]により、[0][0] [1][0] [2][0] [3][0] [4][0] [0][1] [1][1] [2][1]...みたいな感じにループしていくと思われます。
上記のコードは解答例なのですが、①で毎回初期化されるので、毎回②の条件は成立する認識であっていますか?
それに伴い、③のstone = pivotにより、④のstone == pivotが毎回成立してしまう気がします。
また、入力例1だったら、stone = board[0][0] であるX と stone = board[1][0] であるO のXとOは比較できているのでしょうか?
この解答例のコードが読み解くことができなかったので、詳しい方教えてください。
回答1件
あなたの回答
tips
プレビュー