algorithm - 将六个平面形状变成一个立方体

标签 algorithm puzzle

我今天打开我的日历,里面有一个谜题。有六 block ,我想我必须把它们做成一个立方体……我试图解决它但失败了。所以我决定尝试用编程来解决它....

我将它们制作成多边形(不确定这是否是个好主意),但不知道如何旋转它们和/或检查任何形状是否与任何其他形状发生碰撞。

形状是这些:

enter image description here

TL;DR:我正在寻求帮助来检查这些形状的每一种可能组合,看看它们是否构成一个立方体。换句话说,我如何旋转和检查多边形(或代表这些部分的其他东西)是否相交?

最佳答案

将它们变成多边形并不是这个问题的正确抽象。

看,您拥有的是立方体的 6 个面,但现在您必须弄清楚如何旋转它们。每个多边形的边上都有 12 个小方 block ,这些方 block 要么开要么关,并且必须与旁边的小方 block 匹配。这是一个非常离散的问题。

整个立方体有8(顶点)+12*2(边)个边上的小立方体。

当每个面放入立方体时,都会占据一些小立方体。

你需要 1) 制作一个映射,将面映射到给定面上的整个立方体中,在给定的方向上 2)搜索没有小立方体被占用两次的配置。

关于algorithm - 将六个平面形状变成一个立方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13748789/

相关文章:

algorithm - 如果 g , h 是 f(n) = O(g(n)) 和 g(n) = O(h(n)) 证明 f(n) = O(h(n)) 的函数

puzzle - 数组中的数字是否包含有效三角形的边

javascript - 这段 JavaScript 代码是做什么的?

algorithm - 有什么算法可以找到双麻烦数吗?

.net - Lookup Class 在 LINQ 中,底层数据结构是什么?

algorithm - 在 Floyd 循环查找算法中跳过一个以上的节点

c - 判断一个数是否是另一个数的幂的算法

algorithm - 用户事件算法

prolog - 使用 clpfd 进行过桥拼图

puzzle - 您如何在面试中回答您认为毫无意义的问题?