step14からわずかに付け足し。

<?php
/*
・ 1 行目には盤面の行数を表す整数 H , 盤面の列数を表す整数 W , 現在の y, x 座標を表す sy sx , 移動する回数 N が与えられます。
・ 続く H 行のうち i 行目 (0 ≦ i < H) には、盤面の i 行目の文字をまとめた文字列 S_i が与えられ、 S_i の j 文字目は、盤面の i 行目の j 列目に書かれている文字を表します。(0 ≦ j < W)
・ 続く N 行のうち i 行目 (1 ≦ i ≦ N) には、i 回目の移動の向き d_i と移動するマス数 l_i が与えられます。
*/
//プレイヤーははじめ北を向いています。
$s = trim(fgets(STDIN));
$s = str_replace(array("\r\n","\r","\n"), '', $s);
$s = explode(" ", $s);
//echo "hello = ".$s[0]." , world = ".$s[1]."\n";
$h = $s[0];
$w = $s[1];
$y = $s[2];
$x = $s[3];
$num = $s[4];
$dis="N";//初期
$outbox = false;//reset
for ($i = 0; $i < $h; $i++) {
$hoge = trim(fgets(STDIN));
for ($j = 0; $j < $w; $j++) {
$map[$i][$j] = mb_substr($hoge,$j,1);
}
}
//print_r($map);
//初期位置を*に
$map[$y][$x] = "*";
for ($i = 0; $i < $num; $i++) {
//echo($i."かいめ"."\n");
$t = trim(fgets(STDIN));
$t = str_replace(array("\r\n","\r","\n"), '', $t);
$t = explode(" ", $t);
$rotate = $t[0];
$masu = $t[1];
//echo "rotate = ".$rotate." , masu = ".$masu.", dis = ".$dis."\n";
//方向を変える
if($rotate == "L"){
$dis = rotate_l($dis);
//echo("dis変更後 ".$dis."\n");
}else{
$dis = rotate_r($dis);
//echo("dis変更後 ".$dis."\n");
}
//マス数移動
for ($j = 0; $j < $masu; $j++) {
if($dis=="N"){
if($y>0 && $map[$y-1][$x]=="."){
$y--;
$map[$y][$x] = "*";
}else{
$outbox = true;
//break ;
}
}elseif($dis=="E"){
if($x < $w && $map[$y][$x+1]=="."){
$x++;
$map[$y][$x] = "*";
}else{
$outbox = true;
//break ;
}
}elseif($dis=="S"){
if($y < $h && $map[$y+1][$x]=="."){
$y++;
$map[$y][$x] = "*";
}else{
$outbox = true;
//break ;
}
}elseif($dis=="W"){
if($x > 0 && $map[$y][$x-1]=="."){
$x--;
$map[$y][$x] = "*";
}else{
$outbox = true;
//break ;
}
}else{
echo("予想外");
}
}
if($outbox==true){
break;
}
}//end for i
//出力
for($i=0; $i<$h; $i++){
for($j=0; $j<$w; $j++){
echo($map[$i][$j]);
}
echo("\n");
}
//関数
function rotate_l($dis){
if($dis=="N"){
$dis="W";
}elseif($dis=="W"){
$dis="S";
}elseif($dis=="S"){
$dis="E";
}elseif($dis=="E"){
$dis="N";
}
return($dis);
}
function rotate_r($dis){
if($dis=="N"){
$dis="E";
}elseif($dis=="E"){
$dis="S";
}elseif($dis=="S"){
$dis="W";
}elseif($dis=="W"){
$dis="N";
}
return($dis);
}
?>
出力する場所がforの中でなくなったのでちょっと引っかかった。今回の出力はforの外の方がいい。
0