我正在试图找出一种将一系列矩形和正方形堆叠或“打包”成3x1
或6x2
的块的解决方案,这样就不会有一个带有突出元素的块和不平衡的一端。在必须在另一条线上断开之前,块的宽度最多可以是3。图片链接如下。
我尝试过使用3种测量系统,宽度+高度,空间(元素占据的单个块的数量)+宽度,空间+高度。
网格可以使用5种可能的元素。图片链接如下。
使用S + H范例:
Name | Space x Height
Large - 4 x 2
Fullwidth - 3 x 1
Horizontal - 2 x 1
Vertical - 2 x 2
Item(Single) - 1 x 1
到目前为止,逻辑已经让我知道一个块总是3x1
或6x2
。如果占用的空间超过3,则意味着该块必须至少有2个块高,例如,如果有2个元素,总共4个空格,则其余元素必须仅占用2个空格。
为了简单起见,我排除了9x3的可能性。
水平+项目
水平= 2 x 1
2个空格1高
没有填写一行,所以我们需要另一个元素
项目= 1 x 1
2 + 1 = 3个空格
1 = 1 = 1高
水平+项目= 3x1。
项目+项目+项目
1x1 = 1空格1高 1x1 + 1x1 = 2个空格1高 1x1 + 1x1 + 1x1 = 3个空格1高 Item + Item + Item = 3x1。
水平+水平+垂直
2x1 = 2空间1高 2x1 + 2x1 = 4空格1高 空间是>因此,块最后必须是6x2。有4个空格意味着必须添加元素,因此它们占用2个空格并且高2个 2x1 + 2x1 + 2x2 = 6个空格2 Tall
我不确定我是否接近解决方案或离开
首先放入元素的实际顺序无关紧要,因为我正在使用外部库将它们放在处理该逻辑的相干块中。
E.g Horizontal + Horizontal + Vertical == Horizontal + Vertical + Horizontal
。
如果有帮助,逻辑将用PHP编写。