Соревнование
Учитывая доску вещицы, как показано ниже:
| |
| /\ / |
| \ /|
| \ \ /\ \ |
| \ / \ |
|\ / / \ |
| \ / \ |
| \ |
| \ / \ /\ \ |
|\ / / \ /|
| / |
| /\ / / |
| / |
|\ / / / |
| |
----------------------
Ваша задача - превратить список «бросков» в счет.
Доска всегда будет 20 символов (плюс 2 ребра) шириной, но переменной высоты. Каждый «бросок» - это число, обозначающее, где мяч падает на доску, начиная с 0 для крайнего левого угла и до 19 для крайнего правого. Каждый шар будет падать прямо вниз, если он не встретит a /или a \. При столкновении /мяч перемещается на одну колонку влево, а \мяч перемещается на одну колонку вправо. После смещения мяч продолжает двигаться прямо вниз, как и раньше. Счет за бросок зависит от того, где мяч коснулся нижней части доски.
Баллы за каждую финишную позицию следующие:
| |
----------------------
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
Тестовые сценарии
Я использовал несколько тестовых сценариев, написанных Джои и Вентеро (надеюсь, они не против ...), чтобы создать несколько тестов для этой задачи: -
Использование: ./test [your program and its arguments]
Это Codegolf - выигрывает самое короткое решение.