环绕3个引脚的不同组合

时间:2014-07-17 14:36:03

标签: algorithm combinations

我正在使用3个LED,并且我想编写一些简洁的代码来循环遍历3的所有不同组合。

i.e. 0=Red led, 1=blue, 2=green
000 = Red
001 = 011 = ... = 110 = Red + Blue
002
012
111
112
222

只有7种组合,但我坚持使用下面的伪代码

allcombos()
    for(i=0 to 2)
        for(j=i to 2)
            turnOn(i,j)
            delay
            turnOff
            delay
    turnOn(0,1,2)
    delay
    turnOff
    delay

for循环处理所有2个LED组合而不重复,但我必须为所有3个添加一个特殊情况。

我一直在查看代码,并认为他们可能是一种方法,我可以嵌套另一个循环来捕捉这种情况(我意识到没有什么可以从中获得)。更多的运动比什么都重要。或者也许有一种递归方式来做到这一点?

1 个答案:

答案 0 :(得分:3)

我会推荐一种不同的方法(C-ish伪代码):

for (i = 0; i < 8; ++i)
{ if (i & 1)
    turnOn(0)
  if (i & 2)
    turnOn(1)
  if (i & 4)
    turnOn(2)
  delay
  turnOff
}