
paizaのAランクレベルアップセット へび問題 STEP2です。
実は今でもeastとwestがどっちだったかと混乱したりします(そこからか)
あとマップ系は、起点が0,0なのか1,1なのか気をつけないとですね…。

<?php
// 自分の得意な言語で
// Let's チャレンジ!!
//・ 1 行目には盤面の行数を表す整数 H , 盤面の列数を表す整数 W , 現在の y, x 座標を表す sy sx ,
//現在向いている方角 d , 1 マス移動する方向 m が与えられます。
//・ 続く H 行のうち i 行目 (0 ≦ i < H) には、盤面の i 行目の文字をまとめた文字列 S_i が与えられ、
//S_i の j 文字目は、盤面の i 行目の j 列目に書かれている文字を表します。(0 ≦ j < W)
$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];
$dis = $s[4];
$move = $s[5];
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);
//どの方向を向いているかでmove先座標を決定
if($dis=="N" && $move=="L"){ //N
$x--;
}elseif($dis=="N" && $move=="R"){
$x++;
}elseif($dis=="E" && $move=="L"){ //E
$y--;
}elseif($dis=="E" && $move=="R"){
$y++;
}elseif($dis=="S" && $move=="L"){ //S
$x++;
}elseif($dis=="S" && $move=="R"){
$x--;
}elseif($dis=="W" && $move=="L"){ //W
$y++;
}elseif($dis=="W" && $move=="R"){
$y--;
}
//移動先はokかどうか
if($x<0){//はみだしている
$answer = "No";
}elseif($x>$w){
$answer = "No";
}elseif($y<0){
$answer = "No";
}elseif($y>$h){
$answer = "No";
}elseif($map[$y][$x]=="#"){//障害物がある
$answer = "No";
}else{
$answer = "Yes";
}
echo($answer."\n");
?>
0