一位朋友让我为他做一个程序:
所需的程序是解决一个益智游戏"由10个火把组成,排列成2x5(或5x2)矩阵。目标是通过让所有火把点燃来解决这个难题,但这就是难点:当你改变火炬的状态时,相邻火炬的状态也会发生变化(仅相邻,而不是对角线)。
所以就像我有一个特定的矩阵,我需要通过将所有元素转换为True(或者#34; alight")来解析二进制元素,但是元素与相邻元素链接,如无向结构齐次图("网格"图)。
这是一些图片来说明这个谜题是如何运作的:
这是我需要一些帮助/建议/线索的地方:
首先,我如何能够巧妙地解决这种难题(已经通过尝试所有可能性来完成它,但是当我需要超过5"步骤"时,需要花费太多时间来计算),使用数学。
然后,我应该使用哪种编程语言?哪一种最适合这种加工? (我想做一个用户输入初始模式的界面,然后程序搜索解决方案并给出步骤来解决它,通过在界面上提供coords和eventualy图片中的所有步骤。我一定会在论坛上发布它朋友和他的队友。)
我还在搜索,但还没有找到任何可以帮助我有效解决这类谜题的事情。
非常感谢您的帮助和贡献。
PS:抱歉对英语的使用不好。答案 0 :(得分:-1)
您可以使用BruteForce方法解决此问题。
只有10个手电筒,您只需按下每个手电筒一次。所以它将是2 ^ 10 = 1024组合。
对于您可以使用的编程语言:Python,C / C ++,Java或C#。 任何编程语言都可以解决这个问题。