最初の行にスペースと1つのピリオド(.
、「ボール」)が含まれ、その後にスペース、スラッシュ(/
)、およびバックスラッシュ()が含まれる行が続く文字\
列を指定すると、ボールが開始位置から落ちた後に着地する列を決定します。それぞれ/
が左に1列ずつ\
移動し、それぞれが右に1列ずつ移動します。
サンプル入力
.
/ \ \
/ /
\ \/ \
\ /\
\ /\ \
\ /
サンプル出力
ボールは5列目から始まり、/
3行目でヒットし、次に\
5行目から7行目までの3つがヒットし、最終的な位置は
7
主にテキストエディタの規則との一貫性のために、列は1からインデックス付けされていることに注意してください。
エッジケース
ボール/
が最初の列でa に当たった場合、ボールは存在しない列0に永久に留まります0
。
ボールが\/
パターンのいずれかの側に当たった場合、結果は不定です。プログラムは出力なしで終了するか、無限ループするか、エラーメッセージを印刷することができます(私のソリューションは印刷します-1
)が、有効な出力と認識できるものを印刷することはできません。
ボールが\\
パターン内の左スラッシュに当たった場合、ボールは右スラッシュではなく、右スラッシュの直下に到達するはずです。私が当初考えていた解決策は、この間違いを起こしやすいため、その道をたどらないでください!
.
最後/
または\
各行の後にスペースがある場合とない場合があります。あなたのプログラムは、そのようなパディングが利用可能であることに依存すべきではありません。同様に、最初の行に続く行がある場合とない場合があります。
最初の行には0個以上のスペースと正確に1個のスペースがあると想定できます.
。後続の行がある場合は、ゼロ個以上のスペースとゼロ個以上のスラッシュが含まれます。
実装の詳細
プログラムは、ファイル(コマンドライン引数として指定)から読み取るか、標準入力から読み取ることができます。
プログラムは、単一の数値を標準出力に出力する必要があります。(はい、末尾の改行は問題ありません。はい、数字に複数の数字がある場合があります。)
テストケース
入力:
.
出力:
1
ここでの入力は正確に1バイトであることに注意してください。これは、処理できる最小のケースです。
入力:
. \ \ \ \
出力:
6
これらのスラッシュの後にスペースがないことに注意してください。
入力:
. / /\\ / \ //\ \/// // \\/ \/\ /\/
出力:
0
入力:
. / / / \\\ /\\ / \
出力:
1
入力:
. \ / / \
出力:
4
入力:
. \ \/\/\/
出力:
(anything but a nonnegative number)
閉会の辞
この質問は、(重力ベースの)ビリヤードボールタイプのコンピューターをシミュレートするのと似ていますが、非常に単純なので、より多くの関心が得られることを願っています。
Pythonで169文字のソリューションがあります。しかし、ここの才能のあるゴルファーは、その記録をバラバラにすることができると確信しています。:^)
これはcode-golfなので、文字の最短回答は月末に受け入れられます!