【陣取りゲーム】STEP: 1 1 マスの陣取り (paizaランク C 相当) 解答例 – PHP編【Aランクレベルアップメニュー】
【Aランクレベルアップメニュー】 > 【陣取りゲーム】STEP: 1 1 マスの陣取り (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 |
<?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座標を取得する } } } /*-------------「*」の上下左右を「*」にする処理開始---------------*/ $array[$target_y+1][$target_x] = "*"; $array[$target_y-1][$target_x] = "*"; $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"; } ?> |
