お元気さまです。わくワークの義(ヨシ)です。
プログラミングスキルのレベルアップのため、paizaラーニングで、練習問題を解いています。
練習問題は、次のリンクから確認できます。
問題の指示を誤解しており、何度か0点が続きました。
サンプルデータと期待する結果が、指示と違うので、問題が間違っているのではないかと疑って、2日間保留していました。
あらためて問題を読み、タイマーの意味を理解しました。
提出したコードは、次のとおりです。
#include <stdio.h>
int main(void){
char str[1000];
char map[21][22];
int h,w,y,x,n,t,i,j,dr,err,tm,nx;
char rl;
fgets(str, sizeof(str), stdin);
sscanf(str,"%d %d %d %d %d",&h,&w,&y,&x,&n);
for(i=0;i<h;i++){
fgets(str, sizeof(str),stdin);
sscanf(str,"%s",map[i]);
}
dr=0;
err=0;
tm=0;
nx=0;
for(i=0;i<100;i++){
if(nx==0){
fgets(str, sizeof(str),stdin);
sscanf(str,"%d %c",&t,&rl);
}
nx=1;
if(t==tm){
if(rl=='R'){
if(dr==0){
x++;
dr++;
}
else if(dr==1){
y++;
dr++;
}
else if(dr==2){
x--;
dr++;
}
else {
y--;
dr=0;
}
}
else if(rl=='L'){
if(dr==0){
x--;
dr=3;
}
else if(dr==1){
y--;
dr--;
}
else if(dr==2){
x++;
dr--;
}
else {
y++;
dr--;
}
}
nx=0;
}
else {
if( dr==0 ){
y--;
}
else if( dr==1 ){
x++;
}
else if( dr==2 ){
y++;
}
else {
x--;
}
}
if(x<0||y<0||x==w||y==h||map[y][x]=='#'){
err=1;
break;
}
printf("%d %d\n",y,x);
tm++;
}
if(err==1){
printf("%s\n","Stop");
}
return 0;
}
それでは、今日もワクワクな一日を!
チャオチャオ!