【いびつなリバーシ対戦】STEP: 3 裏返せる可能性(斜め) (paizaランク C 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【いびつなリバーシ対戦】STEP: 3 裏返せる可能性(斜め) (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
解答例
|
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
<?php $input = explode(" ",trim(fgets(STDIN))); $row = $input[0]; //マップの行数を取得する $col = $input[1]; //マップの列数を取得する $sy = $input[2]; //石を置くy座標を取得する $sx = $input[3]; //石を置くx座標を取得する $n = 1; for($i = 0;$i < $row;$i++){ for($j = 0;$j < $col;$j++){ $array[$i][$j] = "."; //マップを作成する } } $array[$sy][$sx] = "!"; //石を置く /*--------------------石を置いた位置から斜め右下方向に「*」を入れていく処理開始--------------*/ while(isset($array[$sy + $n][$sx + $n])){ $array[$sy + $n][$sx + $n] = "*" ; $n++; } /*--------------------石を置いた位置から斜め右下方向に「*」を入れていく処理終了--------------*/ $n = 1; //変数の初期化 /*--------------------石を置いた位置から斜め左下方向に「*」を入れていく処理開始--------------*/ while(isset($array[$sy + $n][$sx - $n])){ $array[$sy + $n][$sx - $n] = "*" ; $n++; } /*--------------------石を置いた位置から斜め左下方向に「*」を入れていく処理終了--------------*/ $n = 1; //変数の初期化 /*--------------------石を置いた位置から斜め右上方向に「*」を入れていく処理開始--------------*/ while(isset($array[$sy - $n][$sx + $n])){ $array[$sy - $n][$sx + $n] = "*" ; $n++; } /*--------------------石を置いた位置から斜め右上方向に「*」を入れていく処理終了--------------*/ $n = 1; //変数の初期化 /*--------------------石を置いた位置から斜め左上方向に「*」を入れていく処理開始--------------*/ while(isset($array[$sy - $n][$sx - $n])){ $array[$sy - $n][$sx - $n] = "*" ; $n++; } /*--------------------石を置いた位置から斜め左上方向に「*」を入れていく処理終了--------------*/ $n = 1; //変数の初期化 foreach($array as $value){ //マップを出力する foreach($value as $item){ echo $item; } echo "\n"; } ?> |
