Çocuklarımın oynayacağı bir alfabe matı var, böyle bir şey:
Matın karoları rastgele yerleştirilmiş aylardan sonra, yoruldum ve paspasın tüm karolarını arka plan renklerine göre bölümlere göre gruplandırdım. Yani, harfler arka plan rengini temsil ediyorsa, şöyle bir paspas aldım:
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC
Bu nedenle, A, B, C, D ve E renkleri için, aynı arka plan rengine sahip tüm karoları matta yatay veya dikey olarak bağlamanın her zaman bir yolu vardır. Renklere göre düzgün bir şekilde gruplandırılmış bir paspas diyorum . Önceki örnek için grupları aşağıdaki tablolarda görebilirsiniz:
AA
A
A
AA
AAAA
AAAAAA
BB
BB
B
C
CCC
CCCC
CCC
CCCC
CCC
DDD
D
DD
DD
E
EE
E
EE
E
Ayrıca, her renk için sadece bir grup vardır, bu yüzden bu geçerli olmaz:
ABA
ABA
Çünkü A rengi döşemeleri yalnızca bir grupta gruplandırılmaz. Döşemeler yatay veya dikey olarak bağlanmadığı için bu da geçerli olmaz:
AB
BA
Meydan okuma
Yazdırılabilir ASCII aralığındaki 2 boyutlu bir karakter dizisi verildiğinde (her iki boyutun boyutu 1'e eşit veya daha büyük olduğu sürece kare olması gerekmez), dizinin renklere göre düzgün bir şekilde gruplandırılmış bir altlığı temsil edip etmediğini kontrol edin (dizideki her farklı karakter farklı bir rengi temsil eder). Giriş, 2 boyutlu bir karakter dizisini (2D karakter dizisi, aynı uzunlukta dizeler dizisi vb.) Temsil ettiği sürece makul herhangi bir biçimde olabilir ve çıktı bir çift doğruluk ve falsey değeri olmalıdır (0 / 1, 't' / 'f', true / false, bir şey döndürüldüğünde ve dönüş değerleri girdiler arasında tutarlı olduğu sürece).
Bu kod golf, bu yüzden her dil için en kısa program / fonksiyon / yöntem / lambda kazanmak olabilir!
Örnekler
A truthy
AB
AB truthy
AB
BA falsey
ABCDE truthy
ABCDC falsey
**::dd22
***:d222
*:::::22 truthy
$$$%%%&&
$$%%&&&&
&&$$$%&& falsey
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC truthy
AABB
ABBA
AAAA truthy
AAAB
AAAA
AAAA truthy
Matım renklere göre düzgün bir şekilde gruplandırılmış
(Hala bu sınırları düzeltmem gerekiyor ...)