チャレンジ
以下のようなバガテルボードを考えます。
| |
| /\ / |
| \ /|
| \ \ /\ \ |
| \ / \ |
|\ / / \ |
| \ / \ |
| \ |
| \ / \ /\ \ |
|\ / / \ /|
| / |
| /\ / / |
| / |
|\ / / / |
| |
----------------------
あなたの仕事は「スロー」のリストをスコアに変えることです。
ボードは常に20文字(プラス2エッジ)幅ですが、高さは可変です。各「スロー」は、ボールがボードのどこに落ちるかを表す数値で、左端が0から始まり、右端が19までです。各ボールは、/またはに遭遇しない限り、まっすぐに落ち\ます。遭遇すると/、ボールは左に\1列シフトし、a はボールを右に1列シフトします。シフトされた後、ボールは前と同じようにまっすぐに続きます。スローのスコアは、ボールがボードの底に当たった場所に依存します。
各フィニッシングポジションのスコアは次のとおりです。
| |
----------------------
01234567899876543210
すべてのボードで同じです。最初と最後の行は常に空です。ボールは関係なく、それがから削除された場合の底に到達することが保証されているので、何もそれがで閉じ込められてしまうことができますボードは存在しません\/、\|または|/それらの組み合わせが挙げられます。
入力
入力はSTDINで行われ、ボードの後に空白行が続き、その後にスローを表す数字のスペース区切りリストが続きます。
出力
Ouputは、指定されたゲームの合計スコアでなければなりません。
いくつかの例
入力
| |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| |
| |
----------------------
1 4 2 19 0 2 4 3 17 13 16
出力
9
入力
| |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
----------------------
15 10 3 8 18 19 0 6 7 10
出力
72
入力
| |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| |
----------------------
1 4 18 17 14 2 0 19 15
出力
18
テストスクリプト
JoeyとVenteroによって書かれたいくつかのテストスクリプト(気にしないことを願っています...)を使用して、このタスクのいくつかのテストを作成しました。
使用法: ./test [your program and its arguments]
これはcodegolfです-最短のソリューションが勝ちます。