从单个数字创建范围

时间:2013-01-21 00:28:57

标签: javascript

解决 @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这很好,但远非我正在寻找的。我已经厌倦了对此表示不满。我很好奇这将是什么解决方案。

我不确定是否允许以这种方式提问。但由于它们都与范围有关,我认为尽可能具体地了解我正在寻找的东西。

1 个答案:

答案 0 :(得分:2)

var i = 0;
var ranges = [];
for(; i + 4< n; i+=4) ranges.push([i+1, i+4]);
ranges.push([i+1, n])