扑克排列法(Arranging of cards)

时间:2012-03-07 | 分类:娱乐天地,魔术学堂 | 浏览:6329 | 评论:10 | 发表评论

    前记:
这篇文章是2008年除夕那天写的,也就是刘谦第一次上春晚那天,现在翻出来作为这个博客的第一篇文章,纪念一下那些年我们一起追随的那个纯净的魔界,不被世俗铜臭所沾污。
扑克排列法,并不是魔术,而是表演某些魔术前所做的准备,也就是set牌。其实在魔术表演过程中,并不用把牌弄得这么复杂,写这篇文章纯属个人兴趣。但是有时可能会派上用场,比如遇到奥客时或者在摄像机前表演等……原创文章,请勿转载。

方法一:顺序排列法。

这个是比较简单的排列法,主要利用递加,递减的方法来实现扑克牌数字的排列。
排列过程可以分为两部分:数字的排列和花色的排列。
1、数字的排列:
本文所用的例子是公差为6的递增数列,即:A,7,K,6,Q,5……
为什么要选择公差为6排列呢?原因有三:
①:这样看起来扑克牌比较乱。
②:比较容易计算下一张牌,如果你看到的是5,那么下一张就是5+6=11,也就是J。
由于数列中最大的数是13,而6处于13的中间,13-6=7,因此如果你看到的牌大于7,那你可以直接减7。
例如你看到9,那么下一张就是9-7=2了,你不用算9+6=15,15-13=2。
所以说:看到比7小的就加6,看到比7大的就减7,看到7下一张就是K。
③:我喜欢6这个数字。
2、花色的排列:
我们规定:黑桃为1,红桃为2,梅花为3,方块为4。
那么下一张牌的花色由前一张牌的数字加花色后除以4得到的余数得出(如果整除就是方块)。
例:第3张是黑桃K,黑桃为1,K为13,1+13=14,14÷4=3…2,2为红桃,并且13-7=6,所以下一张为红桃6。

从黑桃A开始,要一张一张地算出下一张牌是很痛苦的事,所以让电脑帮我排吧。以下为VB代码:

Dim a%, b%, m$, n$
a = -5

For i = 1 To 13
    a = a + 6
    If a > 13 Then a = a - 13
    m = Choose(a, "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "J", "Q", "K")
    Print m & "  ";
Next

Print: Print "黑 ";
a = 1: b = 1

For i = 2 To 52
    b = (a + b) Mod 4
    If b = 0 Then b = 4
    n = Choose(b, "黑", "红", "梅", "方")
    a = a + 6
    If a > 13 Then a = a - 13
    Print n & " ";
    If i Mod 13 = 0 Then Print
Next
输出结果如下图(X为10的罗马字母)
顺序排列法
3、扑克牌的排法:
这个就简单了,先把牌按数字分成13组,花色按上图排列,再按从左到右的顺序拿牌。
4、优缺点:
优点:排列简单,推算简单,是追求速度型的首选。
缺点:不是很笨的人能很快发现数字排列的规律,对于追求完美的人来说,这个方法不适用。那么请看第二种排列方法吧。

方法二:口诀排列法。

1、数字的排列:
看看效果,你能找出数字排列的规律吗?不可能吧。
口诀
其实怎么看都是找不出规律的,因为它不是按顺序排列的,而是按特殊的方法排列的。
这个方法是从一本魔术书上看到的。

口诀是:

Eight Kings Threatend To Save Ninety-Five Queens For One Sick Knave.
  8    K      3   10  2   7     9     5      Q    4   A    6    J
也就是谐音排列的,英文对大家来说都是小case吧。
如果前一张是J,那么下一张就是8。
花上几分钟,你就能倒背如流。
2、花色的排列:
花色排列方法同顺序排列法,下一张牌的花色由前一张牌的数字加花色后除以4的余数得出。
当然,这也是让电脑排列的,以下为VB代码:
Dim a, n$
Print "8   K   3   X  2   7   9   5   Q   4   A   6   J"
a = Array(1, 1, 2, 1, 3, 1, 4, 1, 2, 2, 2, 3, 1)

For i = 1 To 4
    For j = 0 To 12
        n = Choose(a(j), "黑", "红", "梅", "方")
        Print n & "  ";
    Next
    
    For k = 0 To 12
        a(k) = a(k) - 1
        If a(k) = 0 Then a(k) = 4
    Next
    
    Print
Next
输出如下:
口诀排列法
3、扑克牌的排法:
这个也很简单,先把牌按数字分成13组,花色按上图排列,再按从左到右的顺序拿牌。
4、优缺点:
优点:排列简单,别人不能发现数字排列的规律,是追求稳重型的首选。
缺点:推算速度较慢,但是扑克牌每隔13张就循环一次,经不起仔细的检查。
对于追求完美的人来说,这个方法也不适用。那么请看第三种排列方法吧。

方法三:乱序排列法。

1、数字的排列和花色的排列:
这个排列方法把数字的排列和花色的排列放在一起了,因为要让整副牌看起来毫无规律,就不能用重复13张牌的方法,因此一个思路诞生了:下一张牌的数字和花色是由前一张牌的数字和花色决定的。
首先我想出了第一个方法:下一张牌的数字由(前一张牌的数字加上花色后)除以13的余数得出,花色由(本张的数字加上前一张花色后)除以4的余数得出,比较复杂,后面再解说。

以下为VB代码:

Dim a%, b%, m$, n$
a = 1: b = 1

For i = 1 To 52
    n = Choose(b, "黑", "红", "梅", "方")
    m = Choose(a, "A", "2", "3", "4", "5", "6", "7", "8", "9", "X", "J", "Q", "K")
    
    a = a + b
    If a > 13 Then a = a - 13
    
    b = (a + b) Mod 4
    If b = 0 Then b = 4
    
    Print n & m & "  ";
    If i Mod 13 = 0 Then Print
Next
执行代码后得出了下面的结果:
乱序排列法1
这样明显出了问题:第1张牌和第33张牌是一样的,都是黑桃A。
这说明了只有前面32张牌形成一个循环,而还有20张牌没参加循环。
怎么办?怎么办啊?方法错了吗?
一般人到了这里就另寻方法了,但是我今天为什么能在这里发表这篇教程,因为我心存一句名言:Just have a little faith.
在思考了1分钟零5秒后,我想:为什么它们没参加循环,因为它们自己可能构成一个循环。
我把前面32张牌找出来排列完后,在剩下的20张牌找出了最小的牌:黑桃2。
把上面的代码改一下,把a = 1: b = 1改为a = 2: b =1(即从黑桃2开始排列),执行代码后结果如下:
乱序排列法2
这次有15张牌形成一个循环,还剩下5张牌。
那么剩下的红桃3,梅花5,梅花8,红桃J,梅花K,是不是也形成一个循环呢?老天保佑啊,一定要成功!
把上面的代码中的a = 2: b = 1改为a = 3: b = 2(即从红桃3开始排列),执行代码后结果如下:
乱序排列法3
剩下的5张牌果然形成了一个循环啊。
不会吧,这样就成功了?
成功其实很近,也很遥远。
把三个循环:①黑桃A~方块10 ②黑桃2~梅花Q ③红桃3~梅花K 合在一起,我们只需记住3个特殊情况:方块10后是黑桃2,梅花Q后是红桃3,梅花K后是黑桃A。
其它的牌都是按规律找的。例如方块树的下一张是什么牌呢?方块是4,树是4(没听过“方块树”这个词?去看看刘小谦的“顽皮的扑克”),那么4 + 4 = 8,下一张牌的数字是8;花色是8加上前一张的花色(8 + 4)再除以4得出的,结果整除,所以是方块8。
例如红桃9,红桃是2,2 + 9 = 11,所以下一张是J;(11 + 2)÷4 = 3…1,1是黑桃,所以红桃9的下一张是黑桃J。
例如方块J,方块是4,J是11,4 + 11 = 15,15 - 13 = 2,所以下一张数字是2;(2 + 4)÷4 = 1…2,2是红桃,下一张就是红桃2。
2、扑克牌的排法:
排列比较复杂,得花点时间,按下图排列吧:
乱序排列法
3、优缺点:
优点:别人较难发现数字排列的规律,扑克牌可以交给观众检查。
缺点:排列很复杂,推算速度较慢。
第二个方法:这个就不写了,大家可以自己研究出满意的排列方法。如果大家有要求我再写出来。

方法四:无敌排列法。

此方法绝对强悍,谁也不能找出其中的规律,规律只有你自己知道。
你只要把一副牌洗乱,再把它们记起来,用右脑的图像记忆法,加上谐音、联想和桩子,不难把一副扑克牌背起来。
如果你真的背了一副扑克牌,那你以后只用它就行了。
具体的记忆方法以后另开帖子。
后记:构思和写这篇文章花了两天的时间,其中第三种方法占了1天的时间,在似错非错中挣扎,不断地在错误中寻找出路,但总算在2009春节前完成了。

还有其它的思路没写出来,大家有意见请提出来,虚心接受大家的意见。

标签: , , ,
本文链接: 扑克排列法(Arranging of cards)
版权所有: 破博客, 转载请注明本文出处。

10个评论

  1. 可可
    2013/08/17 00:01:52

    有实战经验么? :twisted: :twisted:

    • admin
      2013/08/17 20:43:12

      准备起来很麻烦,基本没用到

  2. 圈圈
    2013/03/18 21:44:00

    :arrow: 那时候你的名字叫‘公子’吧~

    • admin
      2013/03/18 21:46:55

      :???: 是的,往事不堪回首啊

      • 圈圈
        2013/03/18 22:56:32

        以前那个论坛也不见了,但是你的这个牌序法我一直记着,特别是那个编程出来的乱序排列法,前几天一搜就搜到你的博客了~ :!:

        • admin
          2013/03/18 23:07:33

          你太厉害了,不过好像看不到图片了,估计是图片用了中文文件名的问题

          • 圈圈
            2013/03/18 23:38:16

            图片我还有存着呢~~~后来我发现你的这个牌序和一位大师的牌序The Osterlind Breakthrough Card System想法是一致的~不过他的更完美,可以一副牌排下来,不用好几个循环

            • admin
              2013/03/19 08:47:57

              这么厉害,那我会找来看的 :sad:

  3. tin_moon
    2012/03/08 11:33:52

    必须要留下哥的第一个脚印!!!!哈哈 :evil:

    • admin
      2012/03/08 11:45:37

      :grin: 太感动了,欢迎继续光临。

发表评论

您的昵称: *

您的邮箱: * (显示gravatar头像)

联系方式: