解決済み@Jeff と @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:
数 16 から範囲 (1-4、5-8、9-12、13-16) を作成する方法
質問 4:
その範囲から最初と最後の数字を見つける方法 (1 と 4、5 と 8 など)
質問 2:
入力数値がたとえば 17 である状況を処理する方法。これにより、これらの範囲は 1 ~ 4、5 ~ 8、9 ~ 12、13 ~ 16 になり、残りの数値は 17 になります。
以下の元の質問。
単一の数値が可変である単一の数値から範囲を作成する方法を知る必要があります。範囲は常に 4 つの位置に収まる必要があります。範囲ごとに、最初と最後の数字を知る必要があります。範囲ごとに、その間の数値を知る必要があります。
例: 単一の (入力) 数値は 16 であり、次の 4 つの範囲 (1-4、5-8、9-12、13-16) が得られます。
質問 1:
数 16 から範囲 (1-4、5-8、9-12、13-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 など) 内の数値を範囲ごとに見つける方法。
最初のステップにたどり着く方法がまったくわからないので、まだ何も試していません。
私が試したことの 1 つは、% (モジュラス) を使用することでしたが、それは答えではありませんでした。私はこれを試しました:
var x=16;
for(var i=0; i<=x; i++)
{
for(i % 4 === 0)
{
return i;
}
}
それは私に4,8,12,16を与えました。これは素晴らしいですが、私が探しているものとはかけ離れています. 私はこれについて頭を悩ませるのにとてもうんざりしています。私はこれに対する解決策が何であるか非常に興味があります。
このような質問をすることが許されているかどうかはわかりません。しかし、それらはすべて範囲に関連しているので、探しているものについてできるだけ具体的にするのが良いと思いました.