利用SQL解釋一個魔術

yangtingkun發表於2009-02-22

昨天在星夜上看到一個撲克的魔術,很有意思。

 

 

首先描述一個這個魔術,從一副撲克牌中隨意抽取21張牌。然後讓人隨意選擇其中的一張牌,牢記後,將其放回到牌中,然後任意洗牌。

下面根據發牌的規則,將牌分成3堆,每堆7張。將每堆牌依次向對方展示,只需要對方確認他剛才記住的牌在其中的哪一堆中。

3堆牌合成一堆,將包含目標牌的一堆牌放在其他兩堆牌的中間。

然後再次發牌,還是分成3堆。讓對方確認後,仍然將目標牌所在的那7張牌,放到另外兩堆牌的中間。

最後再次重複發牌,確認的過程,仍然將確認的目標牌堆放在中間。

下面神奇的時刻來到了,從這堆撲克牌中每拿一張,說一個字:“你要相信魔術,你的牌是”,說完這些話,下一張牌就是對方所記的那張牌。

看上去這個魔術確實很神奇,不過既然魔術可以這樣表演,就說明無論這張牌在哪個位置,只要按照這個規則,最後都一定會來到指定的地方。

下面用SQL來演示一下:

SQL> WITH A AS
  2  (SELECT ROWNUM P FROM DUAL CONNECT BY LEVEL <= 21)
  3  SELECT
  4   7 + CEIL(
  5    (7 + CEIL(
  6     (7 + CEIL(P/3))
  7    /3))
  8   /3)
  9  FROM A;

7+CEIL((7+CEIL((7+CEIL(P/3))/3))/3)
-----------------------------------
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11
                                 11

已選擇21行。

簡單描述一下,子查詢中的P表示這張牌的位置,分別是從121。而後將牌平均分成3份,於是這張牌的位置變為CEIL(P/3),在將這部分牌放到3份牌的中間,也就是說前面方式7張牌,因此結果要加上7

將這個過程重複3次,就是這張牌的最終位置。

根據計算結果,可以看到無論這張牌在哪裡,最終都會到底第十一張的位置。這也就是這個魔術的奧秘所在。

不過SQL只是演示了結果,並沒有給出為什麼會出現這種結果,下面透過數學手段簡單分析一下:

由於第一次平均分的時候,這張牌的位置是任意的,所以這次平均分的意義不大,這次平均分的目的只是將目標牌的那一份放到中間的位置。

所以可以認為這張牌在中間位置第17的任何一個位置上。現在這張牌的位置就是7 + p,下面平均分成三份,然後將目標牌堆放到中間,這是這張牌的位置變為7 + (7+p)/3,最後在重複一次這個動作,結果變為:7 + (7 + (7+p)/3)/3

通分後,結果變成(7*9 + 7*3 + 7 + p)/9,進一步簡化(91 + p)/9,最後變成了10 + (1+p)/9,而p的位置是17,也就是說無論取何值,(1+p)/9都不會大於1,所以最終結果是11

最後,應該修改一下那句話:“你要相信數學,你的牌是

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-557385/,如需轉載,請註明出處,否則將追究法律責任。

相關文章