Diberikan string di mana baris pertama berisi spasi dan satu periode ( .
, "bola"), diikuti oleh garis yang berisi spasi, garis miring ke depan ( /
), dan garis miring terbalik ( \
), tentukan kolom mana bola akan mendarat setelah jatuh dari posisi awalnya . Masing-masing /
memindahkannya ke kiri sebanyak 1 kolom dan masing-masing \
memindahkannya ke kanan sebanyak 1 kolom.
Masukan sampel
.
/ \ \
/ /
\ \/ \
\ /\
\ /\ \
\ /
Output sampel
Bola dimulai pada kolom 5, hits /
on line 3, maka tiga \
's pada garis 5 sampai 7 untuk posisi akhir:
7
Perhatikan bahwa kolom 1-diindeks, sebagian besar untuk konsistensi dengan konvensi editor teks.
Kasus tepi
Jika bola menyentuh a /
di kolom pertama, bola itu selamanya macet di kolom tidak ada 0. Program Anda harus menangani ini dengan benar dengan mencetak 0
.
Jika bola menyentuh kedua sisi \/
pola, hasilnya tidak ditentukan. Program Anda diizinkan untuk mengakhiri tanpa output, loop tanpa batas, atau mencetak pesan kesalahan (solusi saya mencetak -1
), tetapi tidak boleh mencetak apa pun yang dapat dianggap sebagai output yang valid.
Jika bola menyentuh tebasan kiri dalam suatu \\
pola, bola seharusnya berakhir tepat di bawah tebasan kanan, bukan ke kanan. Solusi yang awalnya saya bayangkan adalah cenderung salah, jadi jangan pergi jalan itu!
Mungkin ada atau mungkin tidak ada spasi setelah .
atau yang terakhir /
atau \
pada setiap baris. Program Anda seharusnya tidak mengandalkan padding yang tersedia. Pada catatan yang sama, mungkin ada atau tidak ada baris yang mengikuti baris pertama.
Anda dapat mengasumsikan bahwa baris pertama akan memiliki nol atau lebih banyak ruang dan tepat satu .
. Baris berikutnya, jika ada, akan memiliki nol atau lebih banyak ruang dan nol atau lebih garis miring.
Detail implementasi
Program Anda dapat membaca dari file (ditentukan sebagai argumen baris perintah) atau membaca dari input standar, sesuai keinginan Anda.
Program Anda harus menampilkan satu nomor ke keluaran standar. (Ya, garis belakang baru baik-baik saja. Ya, jumlahnya mungkin memiliki lebih dari satu digit.)
Uji kasus
Memasukkan:
.
Keluaran:
1
Perhatikan bahwa input di sini persis satu byte. Ini adalah kasus terkecil yang harus Anda tangani.
Memasukkan:
. \ \ \ \
Keluaran:
6
Perhatikan bahwa tidak ada spasi setelah garis miring ini.
Memasukkan:
. / /\\ / \ //\ \/// // \\/ \/\ /\/
Keluaran:
0
Memasukkan:
. / / / \\\ /\\ / \
Keluaran:
1
Memasukkan:
. \ / / \
Keluaran:
4
Memasukkan:
. \ \/\/\/
Keluaran:
(anything but a nonnegative number)
Kata penutup
Pertanyaan ini mirip dengan Mensimulasikan komputer jenis bola biliar (berbasis gravitasi) , tetapi secara signifikan lebih sederhana, sehingga mudah-mudahan itu akan menarik minat lebih banyak.
Saya punya solusi 169 karakter dengan Python. Saya yakin pegolf berbakat di sini bisa merobek rekor itu berkeping-keping. : ^)
Ini kode-golf , jadi jawaban terpendek dalam karakter akan diterima pada akhir bulan!