Bazı metin tabanlı haydut beğenileri duvarlara girmenize izin vermez ve denerseniz size geri dönmenizi sağlar. Oyuncuyu en yakın geçerli yönde hareket ettirebildiğinizde neden bunu yapıyorsunuz?
Meydan okuma
Oyuncu bir adım attıktan sonra, yön ve 3'e 3 karakterlik bir ızgara verilen aynı ızgarayı veren bir işlev programı yazın.
Örneğin,
9
#..
.@#
#.#
olur
#.@
..#
#.#
Giriş
Yön, her biri 8 kardinal yöne karşılık gelen ve hareketsiz duran 1 ila 9 arasındaki tek bir rakamla verilir. Bu, tuş takımındaki sayıların göreli konumlarından türetilir:
NW N NE .. \ | / ... 7 8 9 W- 4 5 6 -E ... 1 2 3 ../ | \ SW S SE
Ancak, 789, 456, 123 yerine 123, 456, 789 sayılarını da kullanabilirsiniz. Başka bir deyişle, isterseniz üst ve alt 2 satırı veya sayıyı değiştirebilirsiniz. Bunlar sadece kabul edilebilir 2 endeks kombinasyonudur.3'e 3 ızgara, yürünebilir zemini, duvarları ve oyuncuyu temsil eden 3 ayrı, yazdırılabilir ASCII karakterden oluşacaktır. (Test durumlarda,
.zemin için kullanılır,#s duvar ve@oyuncu)- Programınızın hangi karakterleri kullanacağını seçebilirsiniz, ancak bunları cevabınızda belirtmelisiniz ve birden fazla denemede tutarlı olmalıdırlar.
- Karakteri temsil eden karakter her zaman 3 x 3 ızgarasının ortasında ve yön her zaman 1 ile 9 arasında olacaktır (dahil)
- Herhangi bir sırayla girdi alabilirsiniz
- 3'e 3 ızgarası char dizisi, dize dizisi, 9 uzunluklu dize veya başka bir makul alternatif olarak girilebilir.
Çıktı
- Bir işlevden veya çıktıdan StdOut'a veya en yakın alternatife dönme
- Sondaki boşluklara ve yeni satırlara izin verilir
- Girişle aynı karakter temsillerini kullanmalısınız
- Girdiler için izin verilen biçimlerin aynısı çıktılar için de kullanılabilir
Oyuncu nasıl hareket eder
Belirtilen yön bir duvarla engellenirse (örneğin, yukarıdaki örnekte 6 yönü varsa), en yakın 2 yöne bakın:
- Bir (ve yalnızca bir) yön serbestse, oynatıcıyı bu yönde hareket ettirin.
- Hiçbir yön ücretsiz değilse, bir sonraki en yakın 2 yöne bakın (yön 5 hariç). Tamamen sardıysanız ve açık bir yön bulamadıysanız (oyuncu duvarlarla çevrili), oynatıcıyı hareket ettirmeyin
- Her iki yön de açıksa, rastgele hareket etmek için birini seçin (her ne kadar aynı olmasa da).
Verilen yön 5 ise, oynatıcıyı hareket ettirmeyin
Test senaryoları
( #= duvar, .= zemin, @= oyuncu)
Giriş: 9 # .. . @ # #. # Çıktı: #. @ .. # #. # Giriş: 3 # .. . @ # #. # Çıktı: # .. .. # # @ # Giriş: 7 ##. # @ # .. # Çıktı: ## @ ##. #. # veya #. # .. # @. # Giriş: 5 ... . '. ... Çıktı: ... . '. ... Giriş: 2 ### # @ # ### Çıktı: ### # @ # ###
puanlama
Bu kod golf , bu yüzden bayttaki en kısa cevap kazanır.
123;456;789yerine kullanabilir miyim 789;456;123?

yuhjklbnmusunuz? HUZUR İÇİNDE YATSIN.