输入:一个由任意大小的 bool 矩阵表示的迷宫。 (越界算0)
00100
00100
01110
11111
01110
00100
输出:一个漂亮的迷宫表示(邻域映射到 wchar_t
):
┌─┐
│1│
┌┘1└┐
┌┘111└┐
|11111|
└┐111┌┘
└┐1┌┘
└─┘
编辑:基本上每个 0 都映射到表示墙布局的 4 位值。
我的做法和想法:
我认为一次查看每个单元格是最简单的。然后查看它的邻居以确定放置什么样的值。结果我有 8 个 bool 输入(所有邻居),这会生成 2^8=256 个不同的场景。我不想对它们全部进行硬编码。
是否有更优雅的方式来正确映射值?
最佳答案
我在 my winning entry 中实现了这个2004 年 IOCCC。我相信您会发现这些代码文档齐全且易于理解。
如果您只是想要答案,我记得,我采用的方法是计算每个单元格周围已占用单元格的位图,并将其用作墙字符(或等效的字形)数组的索引。如果像我的解决方案一样,您不允许对角线移动,则位图长 4 位,因此数组有 2^4=16 个元素。如果您确实允许对角线移动,则需要一个 8 位位图和 256 个条目。
关于c++ - 根据矩阵中的相邻单元格确定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1743964/