Dört mesafe sensörüne sahip küçük bir robotunuz var. Bir odanın düzenini bilir, ancak ızgara yönüne kilitlenmekten başka bir yönlendirme duygusu yoktur. Robotun okumalara göre nerede bulunduğunu bulmak istersiniz, ancak sınırlı sensörler nedeniyle belirsiz olabilir.
Zorluk Açıklaması
Bir oda düzeni ve duvar ile aranızdaki hücre sayısını gösteren dört saat yönünde mesafe verilecektir. Odanın ortasında duvarlar olabilir ve ızgaranın kenarları da duvarlardır. Robot bir duvarın üzerine yerleştirilemez.
Amacınız, robotun içinde yer alabileceği ve verilen değerleri verecek tüm yerleri listelemektir. Robotun yönlendirme hissi olmadığını unutmayın (ızgarada 90 derecelik açılara kilitlenmekten başka - robot asla çapraz olarak veya başka bir eğim açısına yönlendirilmeyecektir), bu nedenle [1, 2, 3, 4], örneğin, okuma [3, 4, 1, 2] ile aynıdır.
Örnekler
Bu örnekler için, hücre koordinatları sol üst hücreden 0 ile indekslenmiş (x, y) çiftleri olarak verilecektir. Okumalar, köşeli parantez içindeki bir listede saat yönünde verilir. Düzenler, boş hücreleri temsil etmek için duvarlar ve diğer karakterler (genellikle noktalar) için pound işaretleri kullanır.
Dava 1
. . . .
. . . .
. . # .
. . . .
- [1, 0, 2, 3] ==> (1, 0), (3, 1)
- [0, 0, 3, 3] ==> (0, 0), (3, 0), (0, 3), (3, 3)
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [1, 1, 2, 2] ==> (1, 1)
Durum 2
# a . # a .
a # . . # a
. . # . . #
# . . # . .
a # . . # a
. a # . a #
- [0, 0, 1, 1] ==> ızgaradaki nokta olan her konum
- [1, 0, 0, 0] ==> a'nın tümü ızgarada
Vaka 3
.
- [0, 0, 0, 0] ==> (0, 0)
Durum 4
. # #
. . .
- [1, 2, 0, 0] ==> (0, 1)
- [0, 1, 2, 0] ==> (0, 1)
- [0, 0, 1, 0] ==> (0, 0)
- [1, 0, 1, 0] ==> (1, 1)
- [0, 1, 0, 1] ==> (1, 1)
Vaka 5
. # . .
. . . .
. . # .
. . . .
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [0, 2, 2, 1] ==> (1, 1)
- [1, 0, 2, 2] ==> (1, 1)
- [0, 3, 0, 0] ==> (0, 0)
- [1, 0, 1, 1] ==> (1, 2)
Diğer Kurallar
- Giriş herhangi bir uygun biçimde olabilir. Giriş, duvarların ve boşlukların bir ızgarası ve saat yönünde dört mesafenin bir listesidir.
- Çıktı, okumayı tatmin eden tüm hücrelerin listesi veya kılavuzun okumayı tatmin ettiğini gösteren değiştirilmiş bir versiyonu olabilir. Çıktının kesin biçimi makul ve tutarlı olduğu sürece önemli değildir. Geçerli çıktı biçimleri aşağıdakileri içerir, ancak bunlarla sınırlı değildir :
- Her hücre koordinatı için sıralı çift olarak bir çizgi yazdırma
- İle ızgara baskı
.
,#
ve!
sırasıyla alan, duvarları ve olası konumları için. - Sıralı çiftlerin bir listesini döndürme
- Bir dizin listesi döndürme
- Boşluklar, duvarlar ve olası konumlar için farklı değerler kullanarak bir liste listesi döndürme
- Okumanın gerçekleşeceği hücreleri temsil etmek için 1s kullanarak 0s ve 1s'lik bir matris döndürün / yazdırın. (Duvarları dahil etmek gerekli değildir)
- Bir kez daha, bu liste kapsamlı değildir, bu nedenle diğer temsiller tutarlı oldukları ve bir ızgara veya listede mümkün olan her geçerli konumu gösterdikleri sürece geçerlidir. Emin değilseniz, bir yorum bırakın ve açıklığa kavuşturmaktan memnuniyet duyarım.
- Bir değerin ızgaradaki en az bir konuma karşılık geldiğini varsayabilirsiniz.
- Giriş ızgarasının en az 1x1 boyutunda ve en az bir boş alana sahip olduğunu varsayabilirsiniz.
- Giriş ızgarasının her boyutta 256 hücreden daha büyük olmadığını varsayabilirsiniz.
- Giriş ızgarasının her zaman mükemmel bir dikdörtgen olduğunu ve pürüzlü olmadığını varsayabilirsiniz.
- Programınız geçersiz girdiler için aklı başında çıktılar verirse herhangi bir ceza veya bonus yoktur.
- Bu kod golf, bu yüzden en kısa kod kazanır.
Case 5
pek doğru görünmüyor. Ben olsun(0,2),(2,1)
,(1,3)
,(1,3)
, venothing
.