【问题标题】:Determine group number given an index in an array给定数组中的索引确定组号
【发布时间】:2020-08-18 18:00:09
【问题描述】:

假设你有一个大小为 n 的数组,它由 x 组大小为 y 的项目组成。 例如,一个大小为 12 的数组,由 3 组 4 项组成。

x*y = n

给定一个项目的索引 (i),你将如何确定它属于哪个组 (g)?

例如,在上面的数组中,给定的索引为 6(其中索引从 0 开始)。这意味着它是第 2 组中的第 3 项,因此 g = 2。索引 8 将产生 g = 3,因为它是第 3 组中的第一项。

得出这个结果 (g) 的公式是什么?

【问题讨论】:

  • 如果你知道组数和项目数,你能计算出指数吗?如果是这样,请重新设计该公式以求解该组。
  • 在 x,y,n 中,我们有多少个?
  • @AkshayBande 我们有 x、y、n 和 i。我们只需要找到 g。

标签: arrays math formula array-formulas


【解决方案1】:

如果我们有 x,y,i 和 n 那么我们可以用下面的公式计算组数。

计算它属于哪个组:y/i。

我假设 x,y 和 i 都从 0 开始。

解释:

我们可以这样写: 假设组是 G,k 是某个数字。

y*G+k = i; 这使得, G = i-k/y

这里我们可以忽略k。 最终表达式:G=floor(i/y)

考虑你的例子。 x = 3,y = 4 和 i = 6。

G = floor(6/4) = 1.

组数从 0 开始,因此将是第 2 组。

【讨论】:

    【解决方案2】:

    这是我的尝试

    let ng = 4 // NO. of groups
    let gs = 3 // Group Size
    let n = ng * gs
    
    let getGroup = (i) => {
      if (n != 0 && i != 0) {
        let mod = i % gs;
        if (mod == 0) {
          return "group " + i / gs + " | " + "position " + gs
        } else {
          return "group " + (((i - mod) / gs) + 1 )+ " | " + "position " + mod
        }
      }
    }
    
    console.log(getGroup(11))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多