目前,我正在研究一种用于在网格上布置图和小部件的算法。我正在使用的基础库具有两个用于构建网格的原语,行和列。我的想法是为我提供一个网格规格,该规格定义每个图占用多少个网格单元。各个图和小部件可以占用一个或多个网格,但必须为矩形。为了使这个问题更具体一些,我将绘制一个简单的4x4网格,其中每个数字代表一个单独的图或小部件:
---------------------
| 1 | 2 | 3 | 3 |
|____|____|____|____|
| 4 | 2 | 5 | 5 |
|____|____|____|____|
| 4 | 6 | 7 | 7 |
|____|____|____|____|
| 4 | 6 | 7 | 7 |
|____|____|____|____|
通过分解网格的每个部分,我们可以将其分解为许多嵌套的行和列,例如在此示例中,它可能看起来像这样:
col1 = column(1, 4)
col2 = column(3, 5)
row1 = row(2, col2)
row2 = row(6, 7)
col3 = column(row1, row2)
grid = row(col1, col3)
# or as a single expression
row(column(1, 4), column(row(2, column(3, 5)), row(6, 7)))
是否可以使用一种算法将网格分解为这样的行和列?我一直在尝试它,但是我尝试过的任何事情都开始变得非常复杂,并且我怀疑我根本找不到找到代表和思考问题的好方法。