将数字除以相等的部分,使得没有任何部分超过另一个数字

时间:2017-07-30 03:46:22

标签: javascript math

几乎是标题;我正在寻找一种方法来取一个数字(例如78)并将其除以不超过另一个数字的相等部分的最小数量(例如25)。部件的数量并不重要,它应该尽可能小 - 这意味着得到的数字应该尽可能大。

对于某些上下文,我想要这样做的原因是使用偶数文本拆分。我正在使用的消息服务只允许每封邮件25行,因此我将文本拆分为多条消息,但我不希望只有一行或两行消息。为此,我希望每,行分割文本,其中n尽可能接近25,并尽可能创建尽可能分割的消息。但是,产生的消息数量根本不重要,所以它不是一个问题。

1 个答案:

答案 0 :(得分:1)

在一些盲目的笨手笨脚之后,我设法解决了这个问题。

out = [list]

if(list.split("\n").length > 25) {
  n = list.split("\n").length
  x = Math.floor(n / 25)
  y = n / x
  while(y > 25) {
    x += 1
    y = n / x
  }

  out = []
  while(list) {
    l25 = list.split(/\r?\n/, Math.ceil(y)).join("\n")
    list = list.slice(l25.length)
    out.push(l25)
  }
}

// Send each value in out as a separate message

其中list是要拆分的字符串,out是生成的字符串数组。