次から始まる、数値の配列で表されるカウンターをプログラムしたいと思います。
[0, 0, 0]
ここでの制約は、各ポジションの上限が異なるため、必ずしも 9 などであるとは限りませんが、指定されているということです。例えば:
[4, 2, 1]
これは、次の増分シーケンスにつながります。
[0, 0, 0]
[0, 0, 1]
[0, 1, 0]
[0, 1, 1]
[0, 2, 0]
[0, 2, 1]
[1, 0, 0]
.
.
.
もちろん、モジュロを使用して各キャリーオーバーを次の位置に追加するソリューションを考えることができます。しかし、誰かがこれを効率的に実装する方法を考えていますか?
それは私の素朴な実装です:
max = [10, 1, 1, 1, 10]
counter = [0, 0, 0, 0, 0]
i = counter.length-1
while counter != max do
counter[i] = counter[i] + 1
while counter[i] > max[i]
counter[i] = 0
i = i - 1
counter[i] = counter[i] + 1
end
i = counter.length-1
end