pengantar
Sisyphus mengalami masalah di tempat kerja akhir-akhir ini. Sepertinya dia tidak pernah menyelesaikan apa pun, dan dia akan senang menemukan solusi untuk masalah ini.
Pekerjaannya saat ini membutuhkan menggulingkan batu ke atas bukit. Ia biasanya melakukan pekerjaannya dengan baik, tetapi setiap kali ia berada di dekat puncak bukit, ia berguling lagi.
Dia menjadi benar-benar frustrasi dengan pekerjaannya dan ingin menyelesaikan masalah secara ilmiah dengan memiliki komputer yang mensimulasikan batu yang bergulir menuruni bukit.
Kebetulan Sisyphus tidak pandai pemrograman, jadi mungkin Anda bisa membantunya?
Tantangan
Setelah perkenalan konyol ini, mari kita berbisnis. Program Anda akan menerima ilustrasi bukit dan batu yang terlihat mirip dengan ini:
#o
##
###
######
########
Dimana #mewakili bagian dari bukit dan omewakili batu.
Anda sekarang harus mengimplementasikan program yang memindahkan lapisan batu ke bawah. Sebagai contoh, output di atas harus:
#
##o
###
######
########
Jika ada daerah yang rata secara horizontal, bukit hanya berguling secara horizontal, jadi ...
o
########
... ini hanya akan membuat gulungan batu ke samping.
o
########
Jika ada area vertikal, batu itu jatuh ke bawah satu langkah, jadi ...
#o
#
#
#####
... akan menghasilkan ...
#
#o
#
#####
Anda juga akan menerima lebar dan tinggi gambar masing-masing dalam satu baris di atas gambar. Jadi, secara lengkap, input sampel kami akan terlihat seperti ini:
10 5
#o
##
###
######
#########
(Perhatikan bahwa spasi putih di sini adalah spasi. Pilih teks dan lihat apa yang saya maksud.)
Beberapa detail
- Ketika rock sudah berada di baris terakhir saat menjalankan program, Anda dapat memilih untuk menghentikan program atau output input yang tidak berubah
- Bukit hanya turun ke bawah
Program Anda harus memformat output persis sama dengan input (termasuk dimensi), jadi jika Anda menyalurkan output program itu sendiri, ia menghitung langkah selanjutnya.
Anda dapat mengasumsikan selalu ada jalan ke bawah, jadi masukan tempat jalur "diblokir" dapat menyebabkan perilaku yang tidak ditentukan
Anda dapat mengasumsikan selalu ada spasi di baris terakhir. Batu itu harus "beristirahat" di sana, jadi setelah memanggil program beberapa kali, selalu menyalurkan outputnya ke dalam dirinya sendiri, Anda harus berakhir dengan batu di baris terakhir, meletakkan di tempat ruang sebelumnya.
Anda dapat menerima input dalam bentuk apa pun yang Anda suka (stdin, file, ...). Anda harus memposting program SELURUH (sehingga semua variabel pra-diinisialisasi dihitung sebagai kode).
Garis diakhiri dengan
\n.Anda bisa mendapatkan beberapa input contoh di sini (pastikan Anda menyalin spasi dengan benar!)
Ini adalah kode-golf , sehingga pengiriman karya dengan byte paling sedikit akan menang.
Pemenang akan dipilih pada 26 Juli 2014. Anda dapat memposting solusi setelah itu, tetapi Anda tidak bisa menang
Jika Anda memiliki pertanyaan, beri tahu saya di komentar.
Selamat bermain golf!
#s, jadi ada satu ruang di ujungnya karena lebarnya adalah 10. Dalam hal ini (setelah beberapa iterasi) batu akan terletak di tempat spasi putih (jadi di bagian bawah -pojok kanan).
