パターン1:連想配列化して、同じ文字列があるか判断する
$winner = "D"; $STR = ""; //全ての入力される文字を1つの文字列にする。 for($i = 0; $i < 5; $i++) { $STR .= trim(fgets(STDIN)); } $length = 5; // $STR文字列を$length文字数に分割して、配列化する。 $board = str_split($STR, $length); // 配列$result は、キーをインデックス番号にもち、欲しかった5文字1列の2次元配列を作成。 // print $board; // 横の調べ for($i = 0; $i < 5; $i++) { if($board[$i] === "OOOOO") { $winner = "O"; break; } elseif($board[$i] === "XXXXX") { $winner = "X"; break; } } // 縦 for($col = 0; $col < 5; $col++) { $string = ""; for ($row = 0; $row < 5; $row++) { $string .= $board[$row][$col]; } if(strpos($string, "OOOOO") !== false) { $winner = "O"; break; } elseif(strpos($string, "XXXXX") !== false) { $winner = "X"; break; } } //斜め (左上から、右下にかけて) $string = ""; for($i = 0; $i < 5; $i++) { $string .= $board[$i][$i]; } if(strpos($string, "OOOOO") !== false) { $winner = "O"; } elseif(strpos($string, "XXXXX") !== false) { $winner = "X"; } //斜め (右上から、左下にかけて) $string = ""; for($i = 0; $i < 5; $i++) { $string .= $board[$i][4 - $i]; } if(strpos($string, "OOOOO") !== false) { $winner = "O"; } elseif(strpos($string, "XXXXX") !== false) { $winner = "X"; } print $winner;
or
パターン2:○か✖ をカウントして、判断する
$board = []; for ($i = 0; $i < 5; $i++) { $board[$i] = trim(fgets(STDIN)); } // 横 for ($i = 0; $i < 5; $i++) { if ($board[$i] === 'OOOOO') { print 'O' . "\n"; return; } elseif ($board[$i] === 'XXXXX') { print 'X' . "\n"; return; } } // 縦 1 列に揃う場合 for ($i = 0; $i < 5; $i++) { $o = $x = 0; for ($j = 0; $j < 5; $j++) { if ($board[$j][$i] === 'O') { $o++; } elseif ($board[$j][$i] === 'X') { $x++; } } if ($o === 5) { print 'O'; break; } elseif ($x === 5) { print 'X'; break; } } // 斜め (左上から右下) $o = $x = 0; for ($i = 0; $i < 5; $i++) { if ($board[$i][$i] === 'O') { $o++; } elseif ($board[$i][$i] === 'X') { $x++; } } if ($o === 5) { print 'O'; return; } elseif ($x === 5) { print 'X'; return; } // 斜め (右上から左下) $o = $x = 0; for ($i = 0; $i < 5; $i++) { if ($board[$i][4 - $i] === 'O') { $o++; } elseif ($board[$i][4 - $i] === 'X') { $x++; } } if ($o === 5) { print 'O'; return; } elseif ($x === 5) { print 'X'; return; } print 'D';