| Bytes | Lang | Time | Link |
|---|---|---|---|
| 097 | Ruby | 110902T210500Z | Lowjacke |
| 130 | Python 2 | 110901T184530Z | cemper93 |
| 159 | Python | 110831T223748Z | Keith Ra |
| 059 | GolfScript | 110829T190150Z | Peter Ta |
Ruby, 123 117 115 107 99 98 97
*b,_,_,n=*$<
p eval n.split.map{|k|i=k.to_i+1
b.map{|l|i-='\ /'.index(l[i])-1}
[i-1,20-i].min}*?+
Python 2, 147 132 130 chars
import sys s=0 l=list(sys.stdin) for t in l[-1].split(): p=int(t)+1 for r in l[:-3]:p-=" /".find(r[p]) s+=min(p-1,20-p) print s
Python, 165 159 chars
import sys
A=list(sys.stdin)
C=range(10)
C+=C[::-1]
for L in A[-4::-1]:C=[C[i+ord(L[i+1])%31%4-1]for i in range(20)]
print sum(C[int(x)]for x in A[-1].split())
It starts with a row of scores and works its way from the bottom up, computing what the scores would be for balls starting at each row.
GolfScript, 60 59 chars
n/{},)\);{1>:x,,{.x=31%4%(+}%}%[10,.-1%+]+0@[~]{2${=}/+}/\;
I was so tempted to write a solution which works by redefining the symbols /, \, and space, but it's actually quite expensive (especially once you can no longer use the original \).
31%4%( is nicked from Keith Randall's solution and maps the ASCII codes for space, /, and \ to 0, -1, 1 respectively. (See edit history).