Menu
CoddyTech

Rat in a Maze

Bir fare, n × n boyutundaki bir maze dizisinin sol üst hücresinden başlar; 1 açık bir hücreyi, 0 ise bir duvarı belirtir ve fare sağ alt hücreye ulaşmalıdır. Her hamle, açık bir hücreye doğru bir hücre aşağı (D), sola (L), sağa (R) veya yukarı (U) gider. Bir yol hiçbir hücreyi iki kez ziyaret etmez ve çıkışta sonlanır.

Her yolu, hamlelerden oluşan bir dize olarak alfabetik sırayla döndür; hiç yol yoksa boş bir dizi döndür.

Fonksiyon

findPaths(maze: integer-2d-array) → string-array
mazeinteger-2d-array
n × n ızgara; açık hücre için 1 ve duvar için 0
Döndürürstring-array
sol üstten sağ alta giden her yolu, alfabetik sırayla bir hareket dizisi olarak

Kısıtlar

  • 2 ≤ n ≤ 5
  • maze[i][j] 0 ya da 1'dir.
  • Her test labirentinde en fazla 2.000 yol vardır. Açık bir 5 × 5 labirentte 8.512 yol vardır, bu nedenle testlerde yer almaz.

Örnekler

Girdi
maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]
Çıktı
["RDDRDR", "RDRDDR"]
Açıklama
Başlangıçta yalnızca sağdaki hücre açıktır ve oradan da yalnızca alttaki hücre açıktır; bu yüzden her iki yol da RD ile başlar. RDDRDR önce gelir, çünkü üçüncü hareketi olan D, R'den önce gelir.
challenge icon

Ek soru

Tüm dört hamleye izin verildiğinde, yolları listelemeden sayabilir misin? Sayı hesaplanamaz hâle gelmeden önce n ne kadar büyük olabilir?

Kodu sıfırla
def findPaths(maze):
    # Kodu buraya yazın

Test #1

Test #2

Argüman

maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]

Beklenen Çıktı

["RDDRDR", "RDRDDR"]