Altıgen ızgaralar, son zamanlarda 2 boyutlu verilerle ilgili zorluklar için oldukça popüler bir bükülme haline geldi. Ancak, aynı derecede ilginç üçgen ızgaraların şimdiye kadar büyük oranda ihmal edildiği görülüyor. Bunu oldukça basit bir meydan okuma ile düzeltmek istiyorum.
İlk olarak, üçgen bir ızgarayı nasıl temsil ederiz? Aşağıdaki örneği düşünün (şimdilik doğru diyagramı dikkate almayın):
Hücreler düzgün bir şekilde normal bir ızgaraya düşer (normal bir ızgara ile arasındaki fark sadece hangi hücrelerin bitişik olduğu kabul edilir):
1234567
89abcde
fghijkl
mnopqrs
Şimdi, sağ şemada gösterildiği gibi, üçgen bir ızgarada üç ana eksen vardır: yatay ve iki diyagonal.
Bunları ASCII ızgarasında vurgulamak:
AVAVAVA
VAabcAV
fVAiAVl
mnVAVrs
Meydan okuma
Üçgen bir ızgarayı temsil eden dikdörtgen bir dize verilir (sol üst köşenin yukarı dönük bir üçgen olduğu). Hücrelerin çoğu .
, ancak tam olarak iki hücre olacaktır #
, örneğin:
....#
.#...
.....
İkisinin #
ızgaranın üç ekseninden herhangi biri boyunca hizalanıp hizalanmadığını belirleyin (yani, yukarıda vurgulanan üç yönden herhangi birinde tek bir sıra üzerinde olup olmadıkları). Bu örnek için cevap "hayır" dır.
STDIN (veya en yakın alternatif), komut satırı bağımsız değişkeni veya işlev bağımsız değişkeni ile girdi alarak ve sonucu STDOUT (veya en yakın alternatif), işlev dönüş değeri veya işlev (çıkış) parametresi aracılığıyla çıktı alarak bir program veya işlev yazabilirsiniz.
Girdi, satır beslemeleri veya başka bir uygun karakterle ayrılmış tek bir dize veya bir dize listesi olabilir. Sen yerine herhangi iki (tutarlı) yazdırılabilir ASCII karakterleri kullanabilir .
ve #
.
Çıkış, olmalıdır truthy vurgulanan hücreler hizalanmış olduğu takdirde bir değer ve falsy aksi değer.
Standart kod golf kuralları geçerlidir.
Test Durumları
Gerçek ızgaralar:
.#..#.
#
#
...........
...#.......
...........
...........
...........
.......#...
...........
...........
.......#...
...........
...........
...........
...#.......
...........
.#.........
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.......#...
.........#.
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
...#.......
...........
.#.....#...
...........
...........
...........
Falsy ızgaraları:
#.....
.....#
.....#
#.....
...#.......
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.........#.
.......#...
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
.#.........