No.3546 Robot on Torus (All Language)
タグ : / 解いたユーザー数 14
作問者 :
Rho
問題文
$H \times W$ のグリッドがあります。上から $i$ 行目、左から $j$ 列目のマス目を $(i, j)$ と表します。各マスの状態は文字 $S_{i, j}$ で表され、. であれば空きマス、# であれば障害物マス、R であればロボットマスであることを意味します。
また、このグリッドはトーラス状です。すなわち、マス $(i, W)$ の右にあるマスは $(i, 1)$ であり、マス $(H, j)$ の下にあるマスは $(1, j)$ です。
ロボットマスはグリッドにただ一つ存在し、はじめ、ロボットマスにはロボットが一つ置かれています。TSG くんは以下の操作を行えなくなるまで繰り返します。
- ロボットの置かれているマスの右下のマスが障害物マスでなければ、ロボットを右下のマスに動かす。
入力
$H\ W$
$S_{1, 1} S_{1, 2}, \ldots, S_{1, W}$
$S_{2, 1} S_{2, 2}, \ldots, S_{2, W}$
$\vdots$
$S_{H, 1} S_{H, 2}, \ldots, S_{H, W}$
- $1 \leq H, W \leq 1000$
- $H, W$ は整数
- $S_{i, j}$ は
.#Rのいずれか - $S_{i, j} =$
Rとなる $(i, j)$ がただ一つ存在する
出力
操作が終了する場合は、最終的にロボットが置かれているマスを $(i, j)$ として、$i, j$ を空白区切りで出力せよ。
操作が終了しない場合は、かわりに loop を出力せよ。
末尾の改行や空白の有無は問わない。また、空白区切りのかわりに改行区切りを用いてもよい。
スコア
想定解: $108$ bytes
スコア計算式
提出されたソースコードのコード長が $x$、この問題の想定解のコード長が $y$ であるとき、そのソースコードのスコアは、$\max(500 - x + y, 100) / 2$ 点である。この問題のスコアはこの問題に提出されたソースコードのスコアの最大値である。
サンプルプログラム (Whitespace)
Whitespace での解答例を示す。このコードを提出することで、$50$ 点を得ることができる。
サンプル
サンプル1
入力
4 4 ..R# #.#. .... ##..
出力
3 1
ロボットははじめ、$(1, 3)$ に置かれています。その後、操作によって、$(2, 4), (3, 1)$ と動き、$(4, 2)$ の障害物マスのため操作が行えなくなります。
よって、最終的にロボットが置かれているマスである $(3, 1)$ を空白区切りで出力してください。
サンプル2
入力
3 3 ... .R. ...
出力
loop
ロボットは、$(2, 2), (3, 3), (1, 1), (2, 2), (3, 3), \ldots$ と動き、操作が終わることはありません。
よって、loop を出力してください。
サンプル3
入力
15 39 ........######...#####.....####........ ........#.##.R..##...##...##..##....... ..........##....#........##............ ..........##.....#####...##............ ..........##.........##..##..###....... ..........##....##...##...##..##....... .........####....#####.....#####....... ....................................... .####.....####..##...##..#######...##.. ..##.......##...##...##...##...#..####. ..##.......##....##.##....##.#....####. ..##.......##....##.##....####.....##.. ..##...#...##.....###.....##.#.....##.. ..##..##...##.....###.....##...#....... .#######..####.....#.....#######...##..
出力
5 17
TSG LIVE! 16 ライブコードゴルフ Day 2 は 5/17 に五月祭にて放送されます。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。