Tantangan
Diberikan papan bagatelle seperti di bawah ini:
| |
| /\ / |
| \ /|
| \ \ /\ \ |
| \ / \ |
|\ / / \ |
| \ / \ |
| \ |
| \ / \ /\ \ |
|\ / / \ /|
| / |
| /\ / / |
| / |
|\ / / / |
| |
----------------------
tugas Anda adalah mengubah daftar 'lemparan' menjadi skor.
Papan akan selalu memiliki 20 karakter (ditambah 2 tepi) lebar, tetapi dengan tinggi variabel. Setiap 'lemparan' adalah angka yang menunjukkan di mana bola jatuh ke papan, mulai dari 0 untuk paling kiri hingga 19 untuk paling kanan. Setiap bola akan jatuh lurus ke bawah kecuali jika bertemu dengan a /
atau a \
. Menghadapi sebuah /
bola menggeser satu kolom ke kiri, dan \
menggeser bola satu kolom ke kanan. Setelah digeser, bola terus lurus ke bawah seperti sebelumnya. Skor untuk lemparan bergantung pada di mana bola menyentuh bagian bawah papan.
Skor untuk setiap posisi finishing adalah sebagai berikut:
| |
----------------------
01234567899876543210
dan sama untuk semua papan. Baris pertama dan terakhir akan selalu kosong. Bola dijamin untuk mencapai bagian bawah terlepas dari mana ia dijatuhkan, sehingga tidak akan ada papan tempat ia bisa terjebak oleh \/
, \|
atau |/
kombinasi.
Memasukkan
Masukan akan berada di STDIN, dan akan terdiri dari papan diikuti oleh garis kosong diikuti oleh daftar angka yang dipisahkan spasi yang mewakili lemparan.
Keluaran
Ouput harus menjadi skor total untuk game yang diberikan.
Beberapa contoh
Memasukkan
| |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| |
| |
----------------------
1 4 2 19 0 2 4 3 17 13 16
Keluaran
9
Memasukkan
| |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
----------------------
15 10 3 8 18 19 0 6 7 10
Keluaran
72
Memasukkan
| |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| ////////////////// |
| \\\\\\\\\\\\\\\\\\ |
| |
----------------------
1 4 18 17 14 2 0 19 15
Keluaran
18
Skrip uji
Saya telah menggunakan beberapa skrip uji yang ditulis oleh Joey dan Ventero (saya harap mereka tidak keberatan ...) untuk membuat beberapa tes untuk tugas ini: -
Pemakaian: ./test [your program and its arguments]
Ini adalah codegolf - solusi menang tercepat.
Jawaban:
GolfScript,
6059 karakterAku sangat tergoda untuk menulis solusi yang bekerja dengan mendefinisikan kembali simbol-simbol
/
,\
danspace
, tapi itu sebenarnya cukup mahal (terutama setelah Anda tidak lagi dapat menggunakan aslinya\
).31%4%(
adalah sobek dari solusi Keith Randall dan memetakan kode ASCII untukspace
,/
, dan\
untuk0
,-1
,1
masing-masing. (Lihat edit sejarah).sumber
./test ruby golfscript.rb peter.gs
? Saya melemparkan beberapa tes sebagai input pipa sebagai gantinya../test-bagatelle.sh `which golfscript.rb` bagatelle2.gs
Python 2,
147 132130 karaktersumber
s+=min(p,19-p)
?for r in l[:-3]:p-=" /".find(r[p])
harus menyimpan beberapa karakter19-p+1 == 20-p
Python,
165159 karakterItu dimulai dengan deretan skor dan berjalan dari bawah ke atas, menghitung berapa skor untuk bola yang dimulai di setiap baris.
sumber
list(sys.stdin)
bukannyareadlines()
Ruby,
123117115107999897sumber
i-='\ /'...
sebagai gantinya untuk menyimpan satu karakter lagi