Mis hijos tienen una estera con el alfabeto para jugar, algo como esto:
Después de meses con los mosaicos de la alfombra colocados al azar, me cansé y coloqué todos los mosaicos de la alfombra agrupados por secciones de acuerdo con sus colores de fondo. Entonces, si las letras representan el color de fondo, tengo un tapete como este:
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC
Por lo tanto, para los colores A, B, C, D y E, siempre hay una manera de conectar todos los mosaicos con el mismo color de fondo, ya sea horizontal o verticalmente en el tapete. Eso es lo que yo llamo una alfombra debidamente agrupada por colores . Puede ver los grupos para el ejemplo anterior en las siguientes tablas:
AA
A
A
AA
AAAA
AAAAAA
BB
BB
B
C
CCC
CCCC
CCC
CCCC
CCC
DDD
D
DD
DD
E
EE
E
EE
E
Además, solo hay un grupo para cada color, por lo que esto no sería válido:
ABA
ABA
Porque los mosaicos de color A no se agrupan en un solo grupo. Esto tampoco sería válido porque los mosaicos no se conectan ni horizontal ni verticalmente:
AB
BA
El reto
Dado un conjunto de caracteres bidimensionales en el rango ASCII imprimible (no es necesario que sea cuadrado siempre que el tamaño de ambas dimensiones sea igual o mayor que 1), verifique si el conjunto representa una estera correctamente agrupada por colores (cada carácter diferente en la matriz representa un color diferente). La entrada puede estar en cualquier formato razonable siempre que represente una matriz de caracteres bidimensional (matriz de caracteres 2D, matriz de cadenas de la misma longitud, etc.), y la salida debe ser un par de valores de verdad y falsey (0 / 1, 't' / 'f', verdadero / falso, lo que sea siempre que se devuelva algo y los valores de retorno sean consistentes en todas las entradas).
Este es el código de golf, ¡así que puede ganar el programa / función / método / lambda más corto para cada idioma!
Ejemplos
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
Mi esterilla correctamente agrupada por colores.
(Todavía tengo que arreglar esas fronteras ...)