增量故障的数学公式

时间:2014-12-05 18:19:39

标签: javascript python increment

我有一个根据用户设置显示按钮的对话框。 我希望按钮以最佳的6行顺序排列。 意思是,如果用户输入1-6个条目,则应该有1行6个按钮。 如果他输入了7个条目,则第1行和第2行不应为6,而第2行应为4,第2行为3。 如果他输入8,则每行应该有4个按钮 等等......

由于我是一个有点经验丰富的开发人员,我觉得这有点愚蠢....但我很难找到以编程方式找出这些数字的正确方法。

如果有人可以帮助我,我会很感激

谢谢, 大卫

2 个答案:

答案 0 :(得分:0)

我可以在这里想到几个解决方案。基本思路是找出你需要多少行,然后平均每行的按钮数。然后诀窍是处理不均匀的行。

rows = buttons/row_limit;
buttons_per_row = buttons/rows;

然后,您可以向行添加按钮并跟踪剩余部分,或者使用某种处理剩余按钮的递归函数。

button_remainder = 0;
for(row in rows)
    row_buttons = math.floor(buttons_per_row);
    buttons -= row_buttons;

    button_remainder += buttons_per_row - row_buttons;
    if(button_remainder >= 1)
        row_buttons++;
        buttons--;

    row.setButtonCount(row_buttons);

递归函数类似,但它不会跟踪按钮的小数余数。

答案 1 :(得分:0)

如果a / b是整数除法且a % ba除以b的余数,那么您将需要

rows = (buttons + 5) / 6

按钮行。现在您可以除以行数来找到最佳分区。如果要最小化行长度的绝对差异,则第i行(从零开始)可以包含

buttons_in_line[i] = buttons / rows + (i < buttons % rows ? 1 : 0)

按钮。例如。对于22个按钮,您将获得以下布局:

# # # # # #
# # # # # #
# # # # #
# # # # #

或19个按钮:

# # # # #
# # # # #
# # # # #
# # # #