鉴于以下字母以圆形图案排列。
A
B E
C D
每个字母可以与任何相反的字母合并以形成相邻的字母。 e.g。
A + C = B + B
A + D = E + E
B + E = A + A
B + D = C + C
C + A = B + B
C + E = D + D
D + B = C + C
D + A = E + E
E + B = A + A
E + C = D + D
现在给出以下字符网格:
D A C
B E A
A B E
使用以下坐标:
{0,2} {1,2} {2,2}
{0,1} {1,1} {2,1}
{0,0} {1,0} {2,0}
目的是合并相邻的字符,直到所有字符变为 A 。
可能的解决方案是:
1。 D {0,2} + A {1,2} = E
E E C
B E A
A B E
2。 C {2,2} + A {2,1} = B
E E B
B E B
A B E
第3。 E {0,2} + B {0,1} = A
A E B
A E B
A B E
4。 E {1,2} + B {2,2} = A
A A A
A E B
A B E
5。 E {1,1} + B {2,1} = A
A A A
A A A
A B E
6。 E {1,0} + B {2,0} = A
A A A
A A A
A A A
我正在开发一种算法,可以通过编程方式解决这些类型的问题,从3x3一直到10x10网格。字母数量或规则如何合并将不会改变。
我目前有一种运行良好的算法,但远非完美。以下是每次迭代的步骤:
我是程序员和游戏设计师,但我在算法,数学或AI方面根本没有背景。我已经从一个"聪明的人类玩家会做什么"观点。
任何想法都会非常感激!