Wyzwanie
Biorąc pod uwagę tablicę bagatelle taką jak ta poniżej:
| |
| /\ / |
| \ /|
| \ \ /\ \ |
| \ / \ |
|\ / / \ |
| \ / \ |
| \ |
| \ / \ /\ \ |
|\ / / \ /|
| / |
| /\ / / |
| / |
|\ / / / |
| |
----------------------
Twoim zadaniem jest przekształcenie listy rzutów w wynik.
Plansza będzie miała zawsze 20 znaków (plus 2 krawędzie), ale o zmiennej wysokości. Każdy „rzut” to liczba reprezentująca miejsce, w którym piłka wpada na planszę, zaczynając od 0 dla skrajnie lewej, aż do 19 dla skrajnie prawej. Każda piłka spadnie prosto w dół, chyba że napotka a /lub a \. Spotkanie /przesuwa piłkę o jedną kolumnę w lewo, a \przesuwa piłkę o jedną kolumnę w prawo. Po przesunięciu piłka kontynuuje grę prosto w dół, jak poprzednio. Wynik rzutu zależy od tego, gdzie piłka uderzy w spód planszy.
Wyniki dla każdej pozycji końcowej są następujące:
| |
----------------------
01234567899876543210
i są takie same dla wszystkich tablic. Pierwszy i ostatni wiersz zawsze będą puste. Piłka jest zagwarantowane, aby dosięgnąć dna, niezależnie od tego, gdzie jest on spadł z, więc nie będzie żadnych płyt, gdzie można go dostać uwięzionych przez \/, \|lub |/ich kombinacje.
Wejście
Dane wejściowe będą na STDIN i będą się składały z planszy, po której będzie pusta linia, a następnie rozdzielona spacjami lista liczb reprezentujących rzuty.
Wynik
Ouput powinien być całkowitym wynikiem dla danej gry.
Kilka przykładów
Wejście
| |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| |
| |
----------------------
1 4 2 19 0 2 4 3 17 13 16
Wynik
9
Wejście
| |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
----------------------
15 10 3 8 18 19 0 6 7 10
Wynik
72
Wejście
| |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| |
----------------------
1 4 18 17 14 2 0 19 15
Wynik
18
Skrypty testowe
Użyłem kilku skryptów testowych napisanych przez Joeya i Ventero (mam nadzieję, że nie mają nic przeciwko ...), aby utworzyć testy dla tego zadania: -
Stosowanie: ./test [your program and its arguments]
To jest codegolf - wygrywa najkrótsze rozwiązanie.