解决了,杰夫和埃里克,非常感谢。最后,我不得不用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:
如何找到范围内的数字(range1: 1,2,3,4连range2: 5,6,7,8等)。
我还没有真正尝试过什么,因为我根本不知道怎么走第一步。
我试过的一件事是使用%(模数),但这不是答案。我试过这个:
var x=16;
for(var i=0; i<=x; i++)
{
for(i % 4 === 0)
{
return i;
}
}
它给了我4,8,12,16,这是很好的,但远不是我想要的。我已经厌倦了为此而绞尽脑汁。我很好奇有什么办法解决这个问题。
我不确定它是否允许这样问问题。但由于它们都与范围有关,我认为最好是尽可能具体地说明我正在寻找的内容。
发布于 2013-01-21 00:40:33
var i = 0;
var ranges = [];
for(; i + 4< n; i+=4) ranges.push([i+1, i+4]);
ranges.push([i+1, n])
https://stackoverflow.com/questions/14430953
复制相似问题