Die Herausforderung
Bei einem Bagatelle-Brett wie dem folgenden:
| |
| /\ / |
| \ /|
| \ \ /\ \ |
| \ / \ |
|\ / / \ |
| \ / \ |
| \ |
| \ / \ /\ \ |
|\ / / \ /|
| / |
| /\ / / |
| / |
|\ / / / |
| |
----------------------
Ihre Aufgabe ist es, eine Liste von "Würfen" in eine Partitur zu verwandeln.
Die Tafel wird immer 20 Zeichen (plus 2 Kanten) breit sein, aber von variabler Höhe. Jeder 'Wurf' ist eine Zahl, die angibt, wo der Ball ins Spielfeld fällt, beginnend bei 0 (ganz links) bis 19 (ganz rechts). Jeder Ball fällt gerade nach unten, es sei denn, er trifft auf a /oder a \. Wenn Sie auf a /treffen, wird der Ball um eine Spalte nach links und \der Ball um eine Spalte nach rechts verschoben. Nach dem Verschieben geht der Ball weiter wie zuvor. Die Punktzahl für einen Wurf hängt davon ab, wo der Ball den unteren Rand des Bretts berührt.
Die Punktzahlen für jede Endposition sind wie folgt:
| |
----------------------
01234567899876543210
und sind für alle Boards gleich. Die erste und die letzte Zeile sind immer leer. Es ist garantiert, dass der Ball den Boden erreicht, unabhängig davon, von wo er fallen gelassen wird. Es gibt also keine Bretter, an denen er gefangen werden kann \/, \|oder |/Kombinationen.
Eingang
Die Eingabe erfolgt auf STDIN und besteht aus der Tafel, gefolgt von einer Leerzeile, gefolgt von einer durch Leerzeichen getrennten Liste von Zahlen, die die Würfe darstellen.
Ausgabe
Ausgabe sollte die Gesamtpunktzahl für das gegebene Spiel sein.
Ein paar Beispiele
Eingang
| |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| |
| |
----------------------
1 4 2 19 0 2 4 3 17 13 16
Ausgabe
9
Eingang
| |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
----------------------
15 10 3 8 18 19 0 6 7 10
Ausgabe
72
Eingang
| |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| |
----------------------
1 4 18 17 14 2 0 19 15
Ausgabe
18
Testskripte
Ich habe einige Testskripte von Joey und Ventero verwendet (ich hoffe, es macht ihnen nichts aus ...), um einige Tests für diese Aufgabe zu erstellen:
Verwendung: ./test [your program and its arguments]
Das ist Codegolf - kürzeste Lösung gewinnt.