gpt4 book ai didi

javascript - 针对给定纵横比用 n 个元素填充网格的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:37:07 25 4
gpt4 key购买 nike

我需要找到由 n 个元素填充的网格的尺寸,给定纵横比。网格不必填满。

例如,如果 n=8 并且纵横比为 1:1,我应该得到一个 3 x 3 的网格。如果其中有 8 个元素,我将留下一个空单元格:

***
***
**

如果 n=13 并且纵横比为 1:2,我会得到一个 6 x 3 的网格:

******
******
*

我很确定对于任何 n 和任何比率都存在一种计算方法,但我在网上找不到任何东西(可能是因为我不知道这类问题的关键字) .

注意:这是我用 Javascript 制作的可视化,但我不需要 JS 代码,只需要一个算法。

最佳答案

第 1 步 - 求乘数:

如果纵横比为 3:4,则 a=3b=4n = elements
multi = math.ceil( SQRT(n/(a*b)) )
第 2 步 - 查找维度:
dim1 = a * multi;
dim2 = b * multi;

示例。

n = 59。a = 2,b = 3。

 multi = math.ceil  (SQRT (59 / (2*3))) = math.ceil(  sqrt(9.833)  ) = 4
dim1 = 2*4 = 8;
dim2 = 3*4 = 12;

8*12 = 96(所以 59 适合它)。以前是 54 (6x9) - 它太小了。

示例 2.
n = 24。a = 1,b = 2。

 multi = math.ceil  (SQRT (24 / (1*2))) = math.ceil(  sqrt(12)  ) = 4
dim1 = 1*4 = 4;
dim2 = 2*4 = 8;

4*8 = 32(所以 24 适合它)。

示例 3(完全完整)。
n = 27。a = 1,b = 3。

 multi = math.ceil  (SQRT (27 / (1*3))) = math.ceil(  sqrt(9)  ) = 3
dim1 = 1*3 = 3;
dim2 = 3*3 = 9;

3*9 = 27(所以 27(边界值)适合它)。

关于javascript - 针对给定纵横比用 n 个元素填充网格的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com