Bagaimana jika kita memiliki koridor yang terdiri dari dua cermin paralel?
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Sekarang, kami menyinari laser ke bawah ...
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \|
| /|
| / |
Oh lihat. Itu memantul, menjelang akhir, di sana.
Bagaimana jika kita menggambar dua laser tetapi tidak ke arah yang berlawanan?
| \ / |
| \ / |
| \/ |
| /\ |
| / \ |
| / \ |
| / \ |
|/ \|
|\ /|
| \ / |
Hmm, mereka sepertinya tidak bertemu, di sana. Itu nyaman. Apa yang terjadi jika kedua laser menempati ruang yang sama?
| \ / |
| \ / |
| \ / |
| X |
| / \ |
| / \ |
| / \ |
| / \|
|/ /|
|\ / |
Saya kira itu cukup jelas, ya?
Menggambar diagram ini dengan tangan cukup melelahkan (percayalah pada ini). Mungkin beberapa kode bisa melakukannya untuk kita?
- Tulis beberapa kode untuk menampilkan dua cermin paralel, dengan dua laser yang memantul dan berpotongan.
- Input (semua bilangan bulat):
- Lebar koridor
- Panjang koridor
- Posisi awal laser yang tepat (diindeks nol, harus kurang dari lebar)
- Posisi awal laser sebelah kiri (diindeks nol, harus kurang dari lebar)
- Proses
- Jika laser benar, itu akan ditarik satu ruang ke kanan pada baris berikut.
- Jika laser dibiarkan menyala, itu akan ditarik satu ruang ke kiri pada baris berikut.
- Jika laser tidak dapat mengambil langkah ke samping, itu akan mengubah arahnya, tetapi bukan posisinya.
- Jika kedua laser memiliki indeks yang sama, cetak huruf besar X pada indeks tersebut.
- Keluaran
- Sebuah string dengan banyak garis
- Setiap baris dimulai dan diakhiri dengan karakter pipa (|)
- Laser yang tepat dilambangkan dengan back slash (\)
- Laser sisi kiri dilambangkan dengan garis miring ke depan (/)
- Perpotongan dua laser dilambangkan dengan huruf besar X.
- Bahasa apapun
- Saya ingin melihat tautan TIO
- Mencoba memperbaikinya dalam jumlah byte terkecil
Uji kasus
lebar: 6 panjang: 10 kanan: 1 kiri: 4
| \ / |
| \/ |
| /\ |
| / \ |
|/ \|
|\ /|
| \ / |
| \/ |
| /\ |
| / \ |
lebar: 6 panjang: 10 kanan: 0 kiri: 1
|\/ |
|/\ |
|\ \ |
| \ \ |
| \ \ |
| \ \|
| \/|
| /\|
| / /|
| / / |
lebar: 4 panjang: 10 kanan: 2 kiri: 0
|/ \ |
|\ \|
| \ /|
| X |
| / \|
|/ /|
|\ / |
| X |
|/ \ |
|\ \|
lebar: 20 panjang: 5 kanan: 5 kiri: 15
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
lebar: 5 panjang: 6 kanan: 2 kiri: 2
| X |
| / \ |
|/ \|
|\ /|
| \ / |
| X |
lebar: 1 panjang: 2 kanan: 0 kiri: 0
|X|
|X|