No.331 CodeRunnerでやれ
問題文最終更新日: 2015-12-23 23:19:26
        
        
            コンテストの他の問題:
            
        
        
        問題文
あなたは迷路のどこかにいて、上下左右のいずれかを向いています。迷路について、以下のことがわかっています。
- 迷路は長方形のグリッドであること
 - 迷路の外側は空きセルからなること
 - 迷路は壁または空きセルのみからなること
 - ゴールのセルは、迷路の周上にあり、隅でないどれか1個の空きセルであること
 - ゴール以外の迷路の周を構成するセルは壁であること
 - 壁のセルには入れないこと
 - 初期位置からゴールまで隣接する空きセルのみをたどって必ずたどりつけること
 - 初期位置はゴールではない空きセルであるということ
 
- F : 現在位置から現在の向きに1セルだけ前進する。前進出来ない場合はその場にとどまる。
 - B : 現在位置から現在の向きから1セルだけ後退する。このとき向きは変化しない。後退出来ない場合はその場にとどまる。
 - L : 位置をかえないまま、向きを反時計回りに90度回転する。
 - R : 位置をかえないまま、向きを時計回りに90度回転する。
 
- 現在位置から現在の向きに何セルまで進めるか
 - ゴールしたかどうか
 
この問題はリアクティブです。
入力 → 出力 → 入力 → 出力 → ... → 入力("Merry Christmas!") → 終了
という流れになります。入力も出力も1ステップあたり1行で行います。
入力
入力行は、次のロジックで決定されます。末尾に改行が付きます。- もし現在位置がゴールであれば "Merry Christmas!".
 - それ以外の場合は、現在位置から現在の向きに進めるセル数。無限に進める場合は$20151224$.
 
#### #.v# #..# #... ####
迷路と初期位置については、問題文冒頭の制約をすべて満たすことが保証されています。
なお、迷路のサイズは与えられませんが、縦のサイズをN, 横のサイズをMとした場合、
$3\le N\le 20,$
$3\le M\le 20$
を満たします。
出力
出力は以下のいずれかでなければなりません。出力したあと必ず改行してflushしてください。 また"Merry Christmas!"が入力として与えられた場合、ゴールに到着したため、終了してください。
- F
 - B
 - L
 - R
 
- F : 現在位置から現在の向きに1セルだけ前進する。前進出来ない場合はその場にとどまる。
 - B : 現在位置から現在の向きから1セルだけ後退する。このとき向きは変化しない。後退出来ない場合はその場にとどまる。
 - L : 位置をかえないまま、向きを反時計回りに90度回転する。
 - R : 位置をかえないまま、向きを時計回りに90度回転する。
 
サンプル
 
上記の迷路についてゴールするまでの流れを例示します。
    
        
| 入力 | 出力 | 状態 | 
|---|---|---|
| 2 | 
#### #.v# #..# #... ####  | 
        |
| F | ||
| 1 | 
#### #..# #.v# #... ####  | 
        |
| F | ||
| 0 | 
#### #..# #..# #.v. ####  | 
        |
| L | ||
| 20151224 | 
#### #..# #..# #.>. ####  | 
        |
| B | ||
| 20151224 | 
#### #..# #..# #>.. ####  | 
        |
| F | ||
| 20151224 | 
#### #..# #..# #.>. ####  | 
        |
| F | ||
| Merry Christmas! | 
#### #..# #..# #..> ####  | 
        
Note
writerの単純なプログラム(Java,Scanner)では10000stepsぐらいでTLEするようです。C++なら30000,40000steps程度はいけそうです。提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。