Kasabanın etrafında yürüdüğünü ve kurbanlarını çok özel bir örüntüye göre seçtiğini düşünen bir kundakçı düşünün (Ya da alternatif olarak, bahçenin etrafında uçan ve çiçeklerini çok özel bir örüntüye göre polenlemek için topladığınızı düşünün ). Diyelim ki şehir bir N × N matrisi, burada N 2 veya daha büyük bir tam sayıdır . Arda sol üst köşesinden ve kundakçı başlar ev setleri M (önlerinde noktalar M sırayla, her yangından sonra içinde hareket ediyor yönünü değiştirirken, şu anda konum evin sayıdır) Doğu ⟶ Güney ⟶ Batı ⟶ Kuzey ⟶ Doğu ⟶ Güney ... vb. ninnikundakçı, şehirden çıkmalarını sağlayan M'nin değeridir (yani, gemiyi durdurmadan önce en son ziyaret ettikleri ev). Bu bir örnek ile anlamak için daha kolay. Örneğin aşağıdaki matrisi alın:
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
- Sol üst köşeden başlıyoruz, bu nedenle M = 3 (
X
kundakçının şu anki ve önceki konumlarını işaretler):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
- Bilinen düzene göre, ilk önce doğu M (3) noktaları gider ve 2 üzerine iner, böylece M buna göre değişir:
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
- Sonra güneye 2 nokta güneyde gider ve M şimdi 1'dir :
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
- Şimdi 1 nokta batıya doğru hareket eder ve M 3 olur :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1
- 3 nokta kuzeye hareket ettikten sonra kasabadan çıkar! Bu nedenle, 3 bu kundakçı ninni:
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
Bir N × N matrisi verildiğinde (isteğe bağlı olarak N'yi de girdi olarak alabilirsiniz ), kundakçının ninniğini bulun. Daha fazla test senaryosu oluşturabileceğiniz ve kundakçının yolunu görselleştirebileceğiniz bir program yazdım: Çevrimiçi deneyin!
- Sen kundakçı varsayabiliriz yapar (olduğunu, aslında matris çıkabiliriz) ninni var.
- Matris basitlik için sadece 9'dan ( veya daha küçük ) sayıya eşit veya daha küçük pozitif tamsayılar içerecektir . Herhangi bir pozitif tamsayı işleyen çözümler tamamen açıktır.
- Kundakçının , daha önce yaktıkları bir noktaya inebileceğini unutmayın, çünkü hareket ettikleri hissi ilk kez farklıdır. Böyle bir senaryoda, sadece bu öğenin değerini al ve her zamanki gibi tekrar hareket et.
- Herhangi bir programlama dilinde rekabet edebilir ve herhangi bir standart yöntemle girdi alabilir ve çıktı alabilirsiniz ; bu boşluklar varsayılan olarak yasaklanmıştır. Bu kod golf , yani her dil için en kısa sürede (bayt cinsinden) kazanıyor.
Test durumları
------------- 9 2 3 1 7 2 8 7 6 Ninni: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 Ninni: 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 Ninni: 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 Ninni: 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 Ninni: 3 -------------
Matrisler farklı formatta:
[[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], [1, 2, 2, 3, 2, 1, 2]]
Beşinci test örneği, görselleştirilmesi çok ilginçtir .