Anda tinggal di dalam terminal yang lebar 80 karakter. Anda bosan, jadi Anda memutuskan untuk bermain kartu domino. Tidak, bukan jenis membosankan yang terlihat seperti Scrabble, jenis kesenangan di mana Anda menghabiskan waktu satu jam mengatur mereka untuk menonton mereka jatuh dalam sedetik.
Di terminal, domino terlihat seperti ini:
| upright domino
\ left-tilted domino
/ right-tilted domino
__ fallen domino
Seperti kita ketahui, jika domino miring menyentuh yang tegak, domino kedua juga dimiringkan. Satu-satunya pengecualian untuk ini adalah jika dua domino miring menyentuhnya:
|\ --> \\ /| --> // /|\ --> /|\
Sesuaikan konstanta gravitasi terminal Anda sehingga transisi ini membutuhkan 100 ms.
Jika domino miring dimiringkan oleh domino lain atau dinding terminal, perjalanannya berakhir.
Tidak ada domino miring di
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
(80 karakter) akan bergerak, karena dua kartu domino miring paling luar didukung oleh dinding terminal dan semua yang lain didukung oleh kartu domino lainnya.
Namun, jika ruang dalam arah miring kosong, domino jatuh:
| \\ --> |__\ // | --> /__|
Terminal. Konstanta gravitasi. Anda mengerti maksudnya ...
Akhirnya, ada angin sepoi-sepoi dari kiri, jadi domino miring kanan jatuh lebih cepat daripada yang miring kiri:
|/ \| --> |__\|
Tugas
Tulis program / fungsi yang menunjukkan animasi bermain domino di terminal.
Kode Anda harus melakukan hal berikut:
Baca string dari input, yang mewakili keadaan awal domino.
String ini akan berisi tidak lebih dari 80 karakter dan hanya terdiri dari domino yang dijelaskan di atas dan ruang kosong.
Cetak status dan tunggu 100 ms.
Ubah status seperti dijelaskan di atas.
Jika status berubah, kembali ke 2.
Aturan tambahan
Panjang string input tidak mempengaruhi lebar terminal; bahkan jika string lebih pendek dari 80 karakter, dinding terminal masih terpisah 80 karakter.
Setiap kali langkah 2 dijalankan, negara harus dicetak ke lokasi yang sama, menimpa negara sebelumnya.
Karena beberapa bahasa tidak mampu menunggu tepat 100 ms, jangan ragu untuk menunggu jumlah antara 50 dan 1000 ms.
Aturan standar kode-golf berlaku.
Contohnya
Untuk kondisi awal
||\/||
cetak yang berikut ini (satu di atas yang lain):
||\/|| |\\//| \\\/// __\\//__
Untuk kondisi awal
/||||\
cetak yang berikut ini
/||||\ //||\\ ///\\\
Untuk kondisi awal
/|||\
cetak yang berikut ini
/|||\ //|\\
Untuk kondisi awal
|/ \|/ \|/ \|/ \|
cetak yang berikut ini:
|__\|__\|__\|__\|
Untuk keadaan awal (80 karakter)
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
cetak yang berikut ini
\||||____||||/__ /|\ /\ /|\ __\||||____||||/
/
atau/|
dan Anda akan melihat ubin tidak jatuh sepanjang jalan sebagaimana mestinya.