【问题标题】:Mathemmatical formula for incremental breakdowns增量故障的数学公式
【发布时间】:2014-12-05 18:19:39
【问题描述】:

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

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

如果有人能帮我解决这个问题,我将不胜感激

谢谢, 大卫

【问题讨论】:

  • 如果没有标记编程语言,我们也将很难以编程方式找到这些数字。

标签: javascript python increment


【解决方案1】:

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

rows = (buttons + 5) / 6

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

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

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

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

或者对于 19 个按钮:

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

【讨论】:

    【解决方案2】:

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

    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);
    

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

    【讨论】:

    • @ Nikias - 谢谢。效果很好!我在找什么。你能解释一下+5的作用吗? @Bracket - 感谢您的努力。我一直在寻找更像 nikias 的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多