确定给定数组中索引的组号
Determine group number given an index in an array
假设您有一个大小为 n 的数组,它由 x 组大小为 y 的项目组成。
例如,一个大小为 12 的数组,由 3 组 4 项组成。
x*y = n
给定一个项目的索引 (i),您将如何确定它属于哪个组 (g)?
例如,在上面的数组中,给定的索引为 6(索引从 0 开始)。这意味着它是第二组中的第三项,因此 g = 2。索引 8 将产生 g = 3,因为它是第三组中的第一项。
这个结果(g)的推导公式是什么?
如果我们有 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 and i = 6.
G = floor(6/4) = 1.
组数从 0 开始,因此将是第 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))
假设您有一个大小为 n 的数组,它由 x 组大小为 y 的项目组成。 例如,一个大小为 12 的数组,由 3 组 4 项组成。
x*y = n
给定一个项目的索引 (i),您将如何确定它属于哪个组 (g)?
例如,在上面的数组中,给定的索引为 6(索引从 0 开始)。这意味着它是第二组中的第三项,因此 g = 2。索引 8 将产生 g = 3,因为它是第三组中的第一项。
这个结果(g)的推导公式是什么?
如果我们有 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 and i = 6.
G = floor(6/4) = 1.
组数从 0 开始,因此将是第 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))