ビームの反射 Erlang(Beta)編(paizaランク B 相当)
問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
問題
下記の問題をプログラミングしてみよう!
これは、B ランクの問題として出題されていた問題です。試しに解いてみましょう。
現時点では自力で正解することができない場合は、この問題を飛ばして次の問題に進んでください。
この問題の後に続く 3 つの問題に順番に取り組むことで、
この「ビームの反射」の問題を解くために必要な知識や考えた方を身につけることができます。
B ランク獲得に向けた学習にお役立てください。
内部が格子状の正方形の区画に分けられ、一部の区画に鏡が配置された箱を考えます。
今、その箱を上部から眺めているものとし、箱の高さは考えないことにします。
鏡は区画の対角線上に配置され、1つの区画には高々1枚の鏡が配置されます。
鏡のない区画を'_' 、端点が区画の右上および左下の頂点であるような対角線の上に配置された鏡を'/'、もう一方の対角線上に配置された鏡を'\' で表すこととすると、高さが3, 幅が5 の箱の例として次があげられます。
**(環境によりバックスラッシュが円マークで表示されます)**
__\_/
___/_
\/\_/
さて、箱の左上の区画に対し、箱の左側の外部から箱の内部に向けてビームを撃つことを考えます。
まず、ビームは右に向かって真っ直ぐ飛び、鏡がない区画は通過します。
鏡がある区画に入るとビームは鏡の向きに従って反射し、90°角度を変えて同様に進み、反射後も必ず真っ直ぐ進みます。
また、ビームは箱の外周上に到達すると外へ飛び出すようになっており、箱の内部に打ち込まれた後、外部に飛び出るまで反射を続け飛び回ります。

箱の高さHと幅W、および箱の内部の状態が与えられるので、箱の内部に向けてビームが撃たれてから箱の外部に飛び出るまでにビームが箱の中の区画を通過する回数を答えてください。
- 入力される値
-
入力は以下のフォーマットで与えられます。
H W
s_1
s_2
...
s_H
ここで、s_i (1 ≦ i ≦ H) は'_', '/', '\' の三文字からなる長さW の文字列で、箱の内部の状態を表します。
**環境によりバックスラッシュが円マークで表示されます。その場合は文字コードによるバグを防ぐため、ソースコードに記述する際はサンプル入力から円マークをコピー&ペーストすることを推奨します。**
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
標準入力からの値取得方法はこちらをご確認ください
- 期待する出力
答えを一行に出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
- 条件
-
すべてのテストケースにおいて、以下の条件をみたします。
* 1 ≦ H ≦ 100
* 1 ≦ W ≦ 100
問題一覧へ戻る