我想生成特定网格大小的所有唯一填字游戏网格(4x4 是一个很好的大小)。所有可能的谜题,包括非唯一的谜题,都由一个具有网格区域长度的二进制字符串表示(在 4x4 的情况下为 16),因此所有可能的 4x4 谜题都由范围 0 内所有数字的二进制形式表示到 2^16。
生成这些很容易,但我很好奇是否有人有一个很好的解决方案来以编程方式消除无效和重复的案例。例如,所有具有单列或单行的谜题在功能上都是相同的,因此消除了这 8 个案例中的 7 个。此外,根据填字游戏惯例,所有方格必须是连续的。我已经成功删除了所有重复的结构,但我的解决方案需要几分钟才能执行,并且可能并不理想。我对如何检测连续性感到不知所措,所以如果有人对此有想法,将不胜感激。
我更喜欢 python 中的解决方案,但用你喜欢的任何语言编写。如果有人愿意,我可以发布我的 python 代码来生成所有网格和删除重复项,尽管它可能很慢。