1
的氮量通過審查this和this,我想出了一個功能,這可能是更復雜的比它應該是,但是,男人,我的數學SUX:計算最大可用的行和列,以填補項目
function tablize(elements)
{
var root = Math.floor(Math.sqrt(elements));
var factors = [];
for (var i = 1; i <= root; i++)
{
if (elements % i === 0)
{
factors.push([i, elements/i]);
}
}
var smallest = null;
for (var f = 0; f < factors.length; f++)
{
var factor = factors[f];
var current = Math.abs(factor[0] - factor[1]);
if (!smallest || factors[smallest] > factor)
{
smallest = f;
}
}
return factors[smallest];
}
雖然這確實有效,但它提供了我不滿意的結果。例如 - 7,它分爲1x7,我希望它是3x3。這是填充7個元素所需的最小,最佳網格大小。
另外 - 3,它被分成1x3,我希望它是2x2。
我需要這個用於顯示器上的實時攝像頭幀分配,但我完全失去了。我能想到的唯一方法是建立一個額外的功能,以先前生成的數字進行再次分割並再次分割,但這似乎是錯誤的。
解決此問題的最佳解決方案是什麼?