【Bランクレベルアップメニュー】> 【五目並べ】STEP: 5 五目並べ(斜め) (paizaランク C 相当) [難易度: 1644 ±8]
※リンク先へ移動するためには[paiza]へのログインが必要です。
5行5列の五目並べの盤面が与えられます。
盤面の各マスには、"O"か"X"か"."が書かれています。
"O"と"X"は、それぞれプレイヤーの記号を表します。
同じ記号が斜めに連続で5つ並んでいれば、その記号のプレイヤーが勝者となります。
勝者の記号を1行で表示してください。
勝者がいない場合は、引き分けとして、"D"を表示してください。
入力値(例)
XXOXO
OXOXX
OOOOO
OXOX.
XOXXO
出力値(例)
D
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?php for($i = 0; $i < 5; $i++) { $gomoku[$i] = trim(fgets(STDIN)); } $o = $x = 0; $ans = "D"; for($i = 0; $i < 5; $i++) { if($gomoku[$i][4 - $i] == "O") { //右上から左下 $o++; if($o == 5) { $ans = "O"; break; } } elseif($gomoku[$i][4 - $i] == "X") { $x++; if($x == 5) { $ans = "X"; break; } } } $o = $x = 0; for($j = 0; $j < 5; $j++) { if($gomoku[$j][$j] == "O") { //左上から右下 $o++; if($o == 5) { $ans = "O"; break; } } elseif($gomoku[$j][$j] == "X") { $x++; if($x == 5) { $ans = "X"; break; } } } echo $ans; ?> |