问题描述
假设您有一个大小为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,i = 6。
G =下限(6/4)= 1。
组数从0开始,因此将成为第二组。
,这是我的尝试
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))