내 아이들은 다음과 같은 알파벳 매트를 가지고 있습니다.
매트 타일이 무작위로 배치 된 몇 달 후, 피곤하고 매트의 모든 타일을 배경색에 따라 섹션별로 그룹화했습니다. 따라서 글자가 배경색을 나타내는 경우 다음과 같은 매트를 얻습니다.
AABBCDDDE
ABBCCCDEE
ABCCCCDDE
AACCCDDEE
AAAACCCCE
AAAAAACCC
따라서 색상 A, B, C, D 및 E의 경우 매트에서 모든 타일을 동일한 배경색으로 가로 또는 세로로 연결할 수있는 방법이 항상 있습니다. 그것이 내가 색상으로 올바르게 그룹화 된 매트 라고 부르는 것입니다 . 다음 표에서 이전 예의 그룹을 볼 수 있습니다.
AA
A
A
AA
AAAA
AAAAAA
BB
BB
B
C
CCC
CCCC
CCC
CCCC
CCC
DDD
D
DD
DD
E
EE
E
EE
E
또한 모든 색상에 대해 하나의 그룹 만 있으므로 유효하지 않습니다.
ABA
ABA
색상 A 타일은 하나의 그룹으로 그룹화되지 않기 때문입니다. 타일이 수평 또는 수직으로 연결되지 않기 때문에 이것은 유효하지 않습니다.
AB
BA
도전
인쇄 가능한 ASCII 범위의 2 차원 문자 배열 (두 차원의 크기가 1 이상인 경우 정사각형 일 필요는 없음)이 주어지면 배열이 색상으로 올바르게 그룹화 된 매트를 나타내는 지 확인하십시오. (배열에서 각기 다른 문자는 다른 색을 나타냅니다). 입력은 2 차원 문자 배열 (2D 문자 배열, 길이가 같은 문자열 배열 등)을 나타내는 한 합리적인 형식 일 수 있으며 출력은 진실과 거짓 값의 쌍이어야합니다 (0 / 1, 't'/ 'f', true / false (물건이 반환되고 입력 값이 반환되는 한)
이것은 코드 골프이므로 각 언어마다 가장 짧은 프로그램 / 기능 / 방법 / 람다가 이길 수 있습니다!
예
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
내 매트가 색상별로 올바르게 그룹화되었습니다.
(아직도 그 경계를 고쳐야합니다 ...)