解决 @Jeff和@Eric,非常感谢。最后,我必须采用Eric的解决方案进行微小改动。
for(; i+4<=n; i+=4)
我将如何使用它:
function findRange(n,div)
{
var odd =1&n;
var i = 0;
var ranges = [];
for(; i + div<= n; i+=div)
{
ranges.push([i+1, i+div]); // in array 1-4 / 5-8 etc
// or in side cases the 2nd part of the array contains the remainder
ranges.push([i+1, n]); // 1-16,5-16,9-16,etc
ranges.push([i+div, n]); // 4-16,8-16,12-16,etc
if(odd === 1)
{
ranges.push([i+div+1, n]); // in case of input 7 creates array 5-7
}
}
return ranges;
}
console.log(findRange(16,4));
问题1:
如何从f.e.创建范围(1-4,5-8,9-12,13-16)数字16
问题4:
如何找到该范围内的第一个和最后一个数字(1和4,5和8等)
问题2:
如何处理输入数字为例如17的情况。这将给出这些范围1-4,5-8,9-12,13-16和剩余数字17
我需要知道如何从单个数字创建一个范围,其中单个数字是可变的。范围总是需要在4个位置内。每个范围我需要知道第一个和最后一个数字。每个范围我都需要知道它们之间的数字。
例如:单个(输入)数字是16,它给出以下4个范围4(1-4,5-8,9-12,13-16)。
问题1:
如何从f.e.创建范围(1-4,5-8,9-12,13-16)数字16
问题2:
如何处理输入数字为例如17的情况。这将给出这些范围1-4,5-8,9-12,13-16和剩余数字17
问题3:
如何处理输入数为3的情况,因此范围为1-3
以下问题是可选的,因为这些答案可能会在堆栈中找到。
问题4:
如何找到该范围内的第一个和最后一个数字(1和4,5和8等)
问题5:
如何找到每个范围内的数字(范围1:1,2,3,4 |范围2:5,6,7,8等)。
我还没有真正尝试过任何事情,因为根本不知道如何进入第一步。
我尝试的一件事是使用%(模数),但这不是答案。我试过这个:
var x=16;
for(var i=0; i<=x; i++)
{
for(i % 4 === 0)
{
return i;
}
}
它给了我4,8,12,16这很好,但远非我正在寻找的。我已经厌倦了对此表示不满。我很好奇这将是什么解决方案。
我不确定是否允许以这种方式提问。但由于它们都与范围有关,我认为尽可能具体地了解我正在寻找的东西。
答案 0 :(得分:2)
var i = 0;
var ranges = [];
for(; i + 4< n; i+=4) ranges.push([i+1, i+4]);
ranges.push([i+1, n])