關於洗牌的研究(六)——從數學到魔術之完美洗牌
- 2019 年 10 月 8 日
- 筆記
寫再前面:本系列作品由MathMagician獨家首發,一共有七篇,從數學和魔術兩個角度對日常生活中「洗牌」這一現象作了掛一漏萬的分析。之所以說是掛一漏萬,是因為無論數學還是魔術,洗牌中的任何一個小點都夠寫幾篇了。所以,本系列主要選取了一些常見的洗牌方式和相關內容展開作了一些介紹,包括洗牌分類,混亂度評價,過程建模,近似計算,以及幾個基本但是及其巧妙的利用洗牌規律設計的魔術。相信聰明的你讀完以後,會在數學和魔術上,都對「洗牌」這一現象有著更加深入的認識。
歷史文章請戳:
本篇是第六篇:從數學到魔術之完美洗牌
到這一篇,我們來看看完美洗牌這一效果,在完美精確的特性下,能發揮出怎樣的魔力。
回顧一下完美洗牌的過程,它是一種特殊的交叉洗牌,有Out Faro Shuffle和In Faro Shuffle兩種,對於每張牌的位置變化,首先考察其是否在前半疊,不在則減去牌疊一半數量。剩下的操作要麼就是乘以2,或者再加1。
重點來了。
這個操作在二進位的世界裡十分完美,這恰好是個左移位操作,只是移入的數據是0和1的區別,取決於out/in faro還是在不在上半疊,其中out faro和上半疊牌相當於左移1位補0,改變成in faro或下半疊則補1,二者都改則仍然補0:
k << 1 + 1 if in faro xor k >= N /2
k << 1 if not (in faro xor k >= N/ 2)
天哪,撲克牌上的完美洗牌居然對應電腦的移位操作,而在二進位的電腦底層,有大量移位操作的優化來加速運算,這一切竟然正好和一個撲克魔術手法對應!
還有一點,這裡關於移位進入的數是1還是0的邏輯,其實是一個類似於Z2群的數學結構,或者也可以用亦或(xor)和同或(exor)這樣的邏輯運算來直接表達,甚至直接當成一個不進位的加法來理解。
另外,這裡牌的計數順序(從頂部往底部數還是反過來)不影響是否是一個out/in faro,可見計數順序僅僅是對完美洗牌性質的一種描述,並不影響其本身。
那這些特性里有哪些可以用於魔術呢?
1. 完美洗牌僅僅是一次固定的排列變換流程而已,它在觀眾眼裡可以是一次不完美的正常洗牌,這個差別就是產生魔術效果的點。但這樣一次精密的移動能設計的效果其實是非常數學化而且難以表演的。必須加以轉化。
2. 多次完整的完美洗牌有一定的手法困難,但是做到魔術效果並不要求每次都絕對完美,只要能完成魔術效果即可,比如只要一個局部等(之前reverse操作也有變種,只需要頂牌恢復就可以了)。
3. 完美洗牌對撲克牌位置的改變方式是電腦上的移位操作,這是極其數學化的,為設計魔術帶來了機會又有挑戰。但是這給把任意撲克牌移動到任意位置都提供了可能,所以又是極富想像空間的。
4. 上述移位操作是批量進行的,所以沒超過半幅位置的牌若干次洗牌以後都會得到同餘的性質,餘數取決於in / out faro的具體實施順序,這樣一來,就可以用同餘性質做些文章了。
這些特性都是理論上的,要真的變成魔術還不那麼容易,經過和朋友們的討論和自己思考,篩選,以下作品供大家欣賞。
完美三明治
一開始真的為這太數學化的操作改編成魔術而頭疼,不過感謝一位魔術朋友給我提供的點子,讓我眼前一亮,加以練習以後完成了第一個完美洗牌的作品。
影片1 完美三明治
這個作品沒有過渡依賴完美洗牌的效果,用上了加減恆等關係使得精密的數學關係在自由選擇下生效,而完美洗牌只不過把這一效果以三明治的魔術形式展現出來罷了。這是我目前看到完美洗牌相關魔術里,比較適合表演的一個了。綜合表演難度和驚喜程度,這是一個相當不錯的結合了數學和魔術相互優勢的作品了。
如果做不到絕對完美,這裡也只需要保證在靠近底或者頂部的前若干張保持完美就好了,這也取決於觀眾停牌的多少(不能超過26張)是分疊一定要檢查完全相同,這是效果成立的基礎。
數學原理剖析如下:
(嫌煩的可以跳過啦,在前文《加加減減的奧秘——從數學到魔術的思考(一)》系列文章中,早就介紹過相關原理了,這裡大同小異。)
對於一副2n張的撲克牌,編號0~(2n – 1)其中鬼牌定位於(n – 1)和(n – 2)張位置,發牌m張使得位置到(n – m – 1)和(n – m – 2),那麼當選牌位於底部(2n – 1)張時候,也變成了(2n – m – 1),注意m <= n – 2,這樣不會改變一對鬼牌和選牌所在牌疊一上一下,此時,在in faro下恰好鬼牌位置變為{2(n – m – 1) + 1,2(n – m – 2) + 1} = {2(n – m) – 1, 2(n – m) – 3}選牌變成了2(2n – m- 1 – n) = 2(n – m) – 2,這恰好位於兩個鬼牌之間構成sandwich效果。
感謝朋友給我提到的這個好點子。交流創造價值。
當然,由於完美洗牌的交叉特性,完全可以把該流程擴展成一個Collector流程,這個就留給同學們自己設計了,我相信效果一定能比這個還爆炸!
洗牌把格拉斯效果
江湖上傳聞的巴格拉斯效果有各種各樣的變種,利用完美洗牌這麼硬核的方法做到實在是不容易,這個想法很早在英國女王學院提出完美洗牌的二進位效應以後就自然產生了,無奈流程太過繁瑣,而且極其容易失誤,所以絞盡腦汁,完整的作品才在近日想到來分享給大家。
影片2 洗牌巴格拉斯效果
巴格拉斯是每個魔術朋友夢寐以求的效果,但是完美的效果總是遙不可及,我嘗試著把完美洗牌在移動牌上的規律利用好,盡量做到最佳效果。
我們要做的事情是,通過移位操作,把指定的牌移動到指定的位置。指定的牌可以很容易通過手法控制在頂部底部(0位置),接下來的設計就極其精妙了。
按道理,將位置為0的首牌移動到指定0~53的位置可能需要6次洗牌,因為只要不小於32,就是一個6位的二進位數。這對於魔術表演來說顯然太多了,是一個理論可行但是表演會很糟糕的流程。於是,我進行了兩方面的關鍵改造:
1. 位置為0~26從頂部開始洗,位置為27~53從底部開始洗,用53減去以後有恢復了0~26的範圍,這樣最多是一個5位二進位數。通過數牌怎麼都合理的方向,減少了一次洗牌(記得Kiko在講座中提到過,最好正面向上給觀眾數,這樣翻過來數就很合理了,而不翻同樣也合理,翻過來則很糟糕,真是覺得每個細節都是戲啊!)。
2. 我們是通過二進位移位操作達成這個值的,所以值的變化是成倍的,位置大範圍的變化在最後兩次,因此最開始的0~7的前三比特完全可以直接用手法數過去,控頂或者控底以後補對應張數即可,這樣只剩下最後的2個比特位了,僅需要兩次完美洗牌即可做到!
當然,如果轉化後的數比16還小那就可以進一步減少完美洗牌次數,減少失誤了。另外,這裡也並不要求真的完美切分和交叉,只要到控制那一張為止不錯,達到正確加倍加一的效果就夠了,所以一般從那邊數,完美洗牌就從哪邊開始,這樣後面是允許誤差存在的。
而表演上,它在觀眾說完數字以後需要動撲克牌,這是一個說不清的天然劣勢,需要用巧妙的語言讓切牌,洗牌變得合理,最後的結果才看起來神奇,要靠魔術師的功力去引導了。
這絕對是一個硬核魔術,表演得當將產生完全超現實的效果。
後來,朋友還提到過利用前6張的選擇加3次out faro shuffle把選牌控制在整除位置來知曉觀眾的牌,但也免不了要多次詢問,尚且不如一些魔術手法來得乾脆,這裡就暫時沒有表演了,同學們可以想想這個原理可以怎麼設計更好。
到此,我能想到完美洗牌相關的魔術設計就這些了,你如果有新的想法,歡迎留言交流。