【陣取りゲーム】STEP: 2 1マスの陣取り2 (paizaランク C 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【陣取りゲーム】STEP: 2 1マスの陣取り2 (paizaランク C 相当)
※リンク先へ移動する為には「paiza」へのログインが必要です。
前回の問題に障害物が追加された問題です。条件分岐で「.」の時だけ「*」を追加すればOK
解答例
|
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 |
<?php $input = explode(" ",trim(fgets(STDIN))); $row = $input[0]; //マップの行数を取得する $col = $input[1]; //マップの列数を取得する $target_y = 0; //「*」のy座標を格納する変数 $target_x = 0; //「*」のx座標を格納する変数 for($i = 0;$i < $row;$i++){ $array[] = str_split(trim(fgets(STDIN))); //マップを取得し配列に格納する } for($i = 0;$i < $row;$i++){ for($j = 0;$j < $col;$j++){ if($array[$i][$j] == "*"){ $target_y = $i; //「*」のy座標を取得する $target_x = $j; //「*」のx座標を取得する } } } /*-------------「*」の上下左右を「*」にする処理開始---------------*/ if($array[$target_y+1][$target_x] == ".") { $array[$target_y+1][$target_x] = "*"; } if($array[$target_y-1][$target_x] == ".") { $array[$target_y-1][$target_x] = "*"; } if($array[$target_y][$target_x+1] == ".") { $array[$target_y][$target_x+1] = "*"; } if($array[$target_y][$target_x-1] == ".") { $array[$target_y][$target_x-1] = "*"; } /*-------------「*」の上下左右を「*」にする処理終わり---------------*/ for($i = 0;$i < $row;$i++){ //マップを出力する for($j = 0;$j < $col;$j++){ echo $array[$i][$j]; } echo "\n"; } ?> |
