如何找到包含一定数量单元格( N )的表格布局,其尺寸比例( x,y )最接近a给定纵横比( r )?
我需要在表格布局中放置一些项目,并且需要知道我的表格布局必须至少包括所有项目,同时尽可能接近给定的宽高比。< / p>
例如假设我们将 N = 5个项目放入表格布局中,我们的目标宽高比 r 为4:3( 1.33),然后3x2会比2x3表更好。
3 * 2(比例3:2 = 1.5,因此更接近1.33)
[1][2][3]
[4][5][_]
2 * 3(比例2:3 = 0.67)
[1][2]
[3][4]
[5][_]
答案 0 :(得分:0)
我在Python中找到了这个解决方案。
def closest_layout_to_ratio(n, ratio=(4, 3)):
if n == 1: return (1, 1)
th_r = max(ratio)/min(ratio)
th_x = th_r*math.sqrt(n/th_r)
th_y = n / th_x
best = (None, None, math.inf)
for rounder in (math.floor, math.ceil):
y = max(1, rounder(th_y))
x = math.ceil(n/y)
r = x / y
if abs(r - th_r) < abs(best[2] - th_r):
best = (int(x), int(y), r)
return best[:2] if ratio[0] == max(ratio) else best[:2][::-1]