以编程方式查找有限序列中的数字

Finding a number in a finite sequence programmatically

提问人:Robbert 提问时间:9/26/2023 更新时间:9/26/2023 访问量:26

问:

我正在做一个带有 8 个 LED 的 arduino 项目,这些 LED 将在一组 4 种颜色之间循环。我创建了一个颜色数组,并试图弄清楚是否有一种编程方法来计算数组中的哪个元素是下一个

发光二极管 循环 0 循环 1 循环 2 循环 3
0 0 1 2 3
1 1 2 3 0
2 2 3 0 1
3 3 0 1 2
4 0 1 2 3
5 1 2 3 0
6 2 3 0 1
7 3 0 1 2

第一个循环(循环 0)使用模数公式(即 、 等)工作。但是在随后的循环中,数字无法正确重复。例如loop + pixel % 40 + 0 % 40 + (1 % 4)

发光二极管 期望 公式 结果
0 1 1 + (0 % 4) 1
1 2 1 + (1 % 4) 2
2 3 1 + (2 % 4) 3
3 0 1 + (3 % 4) 4
4 1 1 + (4 % 4) 1
5 2 1 + (5 % 4) 2
6 3 1 + (6 % 4) 3
7 0 1 + (7 % 4) 4

这一切都有效,直到我们到达 3 号,其中期望的结果是 0,但我得到 4。下一个循环(循环 2)的结果是 2、3、4、5、2、3、4、5,当我想要 2、3、0、1、2、3、0、1 时。

我无法在互联网上找到任何东西,因为我不确定该问什么。我尝试寻找重复序列,但不断得到与这个问题无关的结果。

有没有一个优雅的数学解决方案?

数组 数学 Arduino 序列

评论


答:

1赞 Peter Plesník 9/26/2023 #1

是的,它是。我认为这满足了表达(loop+pixel)%4