Bayangkan seorang pembakar berjalan di sekitar kota dan mengambil korbannya sesuai dengan pola yang sangat spesifik (Atau, sebagai alternatif, Bayangkan seekor lebah terbang di sekitar taman dan memetik bunga-bunganya untuk diserbuki menurut pola yang sangat spesifik ). Katakanlah kota adalah matriks N × N , di mana N adalah bilangan bulat yang lebih tinggi dari atau sama dengan 2 . Pembakar memulai dari sudut kiri atas dan berturut-turut menetapkan titik M rumah di depan mereka (di mana M adalah jumlah rumah tempat mereka berada saat ini), sambil mengubah arahnya bergerak setelah setiap kebakaran, dalam urutan Timur, Selatan, Barat, Utara, Timur, Selatan, dan seterusnya. Lagu pengantar tidur itudari pelaku pembakaran adalah nilai M yang membuat mereka keluar dari kota (yaitu rumah terakhir yang mereka kunjungi sebelum menghentikan kekejian). Ini adalah cara yang lebih mudah untuk dipahami dengan sebuah contoh. Sebagai contoh, ambil matriks berikut:
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Kita mulai di sudut kiri atas, jadi M = 3 (
X
menandai posisi saat ini dan sebelumnya dari pelaku pembakaran):X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Menurut urutan yang diketahui, pertama kali menuju ke timur M (3) tempat dan mendarat pada 2 sehingga M berubah sesuai:
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1
- Lalu pergi ke selatan 2 tempat dan M sekarang 1 :
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1 1
- Sekarang bergerak 1 tempat ke Barat dan M menjadi 3 :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
- Setelah bergerak 3 titik ke utara, ia keluar kota! Karena itu, 3 adalah lagu pengantar tidur pembakar ini:
X X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
Diberi matriks N × N (Anda juga dapat mengambil N sebagai input), temukan pengantar tidur sang pelaku pembakaran. Saya telah menulis sebuah program yang dengannya Anda dapat menghasilkan lebih banyak kasus uji dan memvisualisasikan jalur pelaku pembakaran: Cobalah secara online!
- Anda dapat berasumsi bahwa pelaku pembakaran memang memiliki lagu pengantar tidur (yaitu, ia benar-benar dapat keluar dari matriks).
- Matriks hanya akan berisi bilangan bulat positif kurang dari atau sama dengan 9 (digit), untuk kesederhanaan. Solusi yang menangani bilangan bulat positif sangat disambut.
- Perhatikan bahwa pelaku pembakaran dapat mendarat di tempat yang telah mereka bakar, kalau-kalau perasaan mereka berbeda dari yang pertama kali. Dalam skenario seperti itu, ambil saja nilai elemen itu dan bergerak lagi seperti biasa.
- Anda dapat bersaing dalam bahasa pemrograman apa pun dan dapat mengambil input dan memberikan output melalui metode standar apa pun , sambil memperhatikan bahwa celah ini dilarang secara default. Ini adalah kode-golf , jadi pengiriman terpendek (dalam byte) untuk setiap bahasa menang.
Uji kasus
------------- 9 2 3 1 7 2 8 7 6 Lagu pengantar tidur: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 Lagu pengantar tidur: 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 Lagu pengantar tidur: 3 ------------- 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Lagu pengantar tidur: 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 1 3 1 2 3 1 1 1 1 1 1 4 5 2 3 1 1 1 1 2 1 2 1 2 2 1 2 2 3 2 1 2 Lagu pengantar tidur: 3 -------------
Matriks dalam format yang berbeda:
[[9, 2, 3], [1, 7, 2], [8, 7, 6]] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2]] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 3, 1, 2]], [ 3, 1, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2, 2], [1, 2, 2, 3, 2, 1, 2]]
Kasus uji kelima sangat menarik untuk divisualisasikan .