本帖最后由 水木子 于 2012-5-13 15:59 编辑
回复 24# MicroBlue
谈谈我的思路!
我代码里面没有什么排除之类意思,而是在将数组元素移动位置。
我们姑且将数组元素想象成扑克牌,而数组每个元素就是一张牌。
再来看看下面这代码,为什么要这样写呢?还记得那个扑克牌魔术是怎么玩的吗?
先将牌打开让观众记忆,观众记号后你开始发牌,第一次可以随意发牌没有顺序,发牌分成3组A/B/C,每组7张共21张,让观众说出他记忆的你张牌的在哪组,假设在A组,那么我们将3组牌收起来,注意这里就是关键了,收起来的时候牌需要有顺序的放,观众指定的那组牌必须放在中间,也就是说收起来的牌顺序是 B/A/C 注意A组在中间,然后再发牌再将牌发成3组每组7张,这些发牌就不能乱发了,也是有序的,必须3组一个一张的来也就是 ABC ABC ABC …… 这样一张一张的发,新得到3组,如此反复3次,最后观众所记忆的这张牌就会被移动他所选那组的中间位置,比如第3次他选了B组,那么他所记忆的牌就是B组第4张,这也就是所以我代码中最后得出结果的时候是在取位置。
说得有点多了,不知道数清楚没有,至于到底为什么会这样,大家可以那扑克牌来试试就知道了。
如下代码就是为了将观众所选组放在牌组的中间,以便下一次发牌。
Case $Label1
_SetData($Label2, $Label1, $Label3)
Case $Label2
_SetData($Label1, $Label2, $Label3)
Case $Label3
_SetData($Label1, $Label3, $Label2) |