Le défi
Étant donné une planche de bagatelle comme celle ci-dessous:
| |
| /\ / |
| \ /|
| \ \ /\ \ |
| \ / \ |
|\ / / \ |
| \ / \ |
| \ |
| \ / \ /\ \ |
|\ / / \ /|
| / |
| /\ / / |
| / |
|\ / / / |
| |
----------------------
votre tâche consiste à transformer une liste de «lancers» en score.
La planche aura toujours 20 caractères (plus 2 bords) de large, mais de hauteur variable. Chaque «lancer» est un nombre représentant l'endroit où le ballon tombe dans le plateau, commençant à 0 pour l'extrême gauche jusqu'à 19 pour l'extrême droite. Chaque balle tombera directement à moins qu'elle ne rencontre a /ou a \. La rencontre avec a /déplace la balle d'une colonne vers la gauche et a \déplace la balle d'une colonne vers la droite. Après avoir été déplacé, le ballon continue tout droit comme auparavant. Le score d'un lancer dépend de l'endroit où le ballon touche le bas du plateau.
Les scores pour chaque position finale sont les suivants:
| |
----------------------
01234567899876543210
et sont les mêmes pour toutes les planches. Les première et dernière lignes seront toujours vides. La balle est garantie pour atteindre le fond , peu importe où il est passé de, donc il n'y aura pas de conseils où il peut se piégés par \/, \|ou des |/combinaisons.
Contribution
L'entrée se fera sur STDIN et consistera en un tableau suivi d'une ligne vierge suivie d'une liste de nombres séparés par des espaces représentant les lancers.
Production
Ouput devrait être le score total pour le jeu donné.
Quelques exemples
Contribution
| |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| |
| |
----------------------
1 4 2 19 0 2 4 3 17 13 16
Production
9
Contribution
| |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
----------------------
15 10 3 8 18 19 0 6 7 10
Production
72
Contribution
| |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| |
----------------------
1 4 18 17 14 2 0 19 15
Production
18
Scripts de test
J'ai utilisé des scripts de test écrits par Joey et Ventero (j'espère que cela ne les dérange pas ...) pour créer des tests pour cette tâche: -
Usage: ./test [your program and its arguments]
C'est codegolf - la solution la plus courte l'emporte.