我的孩子有一个字母垫可以玩,就像这样:
经过数月的随机放置地垫瓷砖后,我累了,并根据其背景颜色按部分分组放置了所有地垫瓷砖。因此,如果字母代表背景色,我会得到一个像这样的垫子:
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范围内的二维字符数组(只要两个维度的大小均等于或大于1,就不必是正方形),请检查该数组是否表示按颜色正确分组的垫子(数组中的每个字符都代表不同的颜色)。输入可以采用任何合理的格式,只要它表示二维字符数组(2D char数组,相同长度的字符串数组,依此类推),并且输出必须是一对真值和假值(0 / 1,'t'/'f',true / false,无论返回什么,并且返回值在输入中都保持一致)。
这是代码高尔夫,因此每种语言中最短的程序/函数/方法/ lambda可能会获胜!
例子
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
我的垫子按颜色正确分组
(我仍然必须修复这些边界...)