・中国剰余定理の応用                  GAI 氏

 トランプは52枚(=13*4)で一組になっていて、これを一列に並べると、1,2,3・・・・,52 の通し
番号kで代行できる。そこで、デックの上からk番目を4と13で割ったときの余りを、
  r1 (=0,1,2,3) と r2 (=0,1,2,3,・・・,12)
で分類していく。

 ここで、中国剰余定理で調査すると、

 一般に、kを4で割ると余りがr1、kを13で割ると余りがr2であるkを求める道具が、PARI/GP
という計算ソフトでは、chinese(Mod(r1,4),Mod(r2,13)) なるコマンドで求められるので、調べ
ると、以下の結果を得る。

 例えば、4で割ると3余り、13で割ると5余るkは?

 r1=3、r2=5 の組合せで、下表から、Mod(31,52) 即ち、k=31 が条件を満たす最小な値を
知らせる。

?for(r1=0,3,for(r2=0,12,print("r1=",r1,",r2=",r2,";",chinese(Mod(r1,4),Mod(r2,13)))))
"スペード"カード配置をここに置く。
r1=0,r2=0;Mod(0, 52) r1=0,r2=1;Mod(40, 52) r1=0,r2=2;Mod(28, 52) r1=0,r2=3;Mod(16, 52)
r1=0,r2=4;Mod(4, 52) r1=0,r2=5;Mod(44, 52) r1=0,r2=6;Mod(32, 52) r1=0,r2=7;Mod(20, 52)
r1=0,r2=8;Mod(8, 52) r1=0,r2=9;Mod(48, 52) r1=0,r2=10;Mod(36, 52) r1=0,r2=11;Mod(24, 52)
r1=0,r2=12;Mod(12, 52)
"ダイア"カード配置
r1=1,r2=0;Mod(13, 52) r1=1,r2=1;Mod(1, 52) r1=1,r2=2;Mod(41, 52) r1=1,r2=3;Mod(29, 52)
r1=1,r2=4;Mod(17, 52) r1=1,r2=5;Mod(5, 52) r1=1,r2=6;Mod(45, 52) r1=1,r2=7;Mod(33, 52)
r1=1,r2=8;Mod(21, 52) r1=1,r2=9;Mod(9, 52) r1=1,r2=10;Mod(49, 52) r1=1,r2=11;Mod(37, 52)
r1=1,r2=12;Mod(25, 52)
"クラブ"カード配置
r1=2,r2=0;Mod(26, 52) r1=2,r2=1;Mod(14, 52) r1=2,r2=2;Mod(2, 52) r1=2,r2=3;Mod(42, 52)
r1=2,r2=4;Mod(30, 52) r1=2,r2=5;Mod(18, 52) r1=2,r2=6;Mod(6, 52) r1=2,r2=7;Mod(46, 52)
r1=2,r2=8;Mod(34, 52) r1=2,r2=9;Mod(22, 52) r1=2,r2=10;Mod(10, 52) r1=2,r2=11;Mod(50, 52)
r1=2,r2=12;Mod(38, 52)
"ハート"カード配置
r1=3,r2=0;Mod(39, 52) r1=3,r2=1;Mod(27, 52) r1=3,r2=2;Mod(15, 52) r1=3,r2=3;Mod(3, 52)
r1=3,r2=4;Mod(43, 52) r1=3,r2=5;Mod(31, 52) r1=3,r2=6;Mod(19, 52) r1=3,r2=7;Mod(7, 52)
r1=3,r2=8;Mod(47, 52) r1=3,r2=9;Mod(35, 52) r1=3,r2=10;Mod(23, 52) r1=3,r2=11;Mod(11, 52)
r1=3,r2=12;Mod(51, 52)

 また、分類を変えると、

?for(r2=0,12,for(r1=0,3,print("r2=",r2,",r1=",r1,";",chinese(Mod(r1,4),Mod(r2,13))))) から
"J"カード配置
r2=0,r1=0;Mod(0, 52) r2=0,r1=1;Mod(13, 52) r2=0,r1=2;Mod(26, 52) r2=0,r1=3;Mod(39, 52)
"A"カード配置
r2=1,r1=0;Mod(40, 52) r2=1,r1=1;Mod(1, 52) r2=1,r1=2;Mod(14, 52) r2=1,r1=3;Mod(27, 52)
"4"カード配置
r2=2,r1=0;Mod(28, 52) r2=2,r1=1;Mod(41, 52) r2=2,r1=2;Mod(2, 52) r2=2,r1=3;Mod(15, 52)
"7"カード配置
r2=3,r1=0;Mod(16, 52) r2=3,r1=1;Mod(29, 52) r2=3,r1=2;Mod(42, 52) r2=3,r1=3;Mod(3, 52)
"10"カード配置
r2=4,r1=0;Mod(4, 52) r2=4,r1=1;Mod(17, 52) r2=4,r1=2;Mod(30, 52) r2=4,r1=3;Mod(43, 52)
"K"カード配置
r2=5,r1=0;Mod(44, 52) r2=5,r1=1;Mod(5, 52) r2=5,r1=2;Mod(18, 52) r2=5,r1=3;Mod(31, 52)
"3"カード配置
r2=6,r1=0;Mod(32, 52) r2=6,r1=1;Mod(45, 52) r2=6,r1=2;Mod(6, 52) r2=6,r1=3;Mod(19, 52)
"6"カード配置
r2=7,r1=0;Mod(20, 52) r2=7,r1=1;Mod(33, 52) r2=7,r1=2;Mod(46, 52) r2=7,r1=3;Mod(7, 52)
"9"カード配置
r2=8,r1=0;Mod(8, 52) r2=8,r1=1;Mod(21, 52) r2=8,r1=2;Mod(34, 52) r2=8,r1=3;Mod(47, 52)
"Q"カード配置
r2=9,r1=0;Mod(48, 52) r2=9,r1=1;Mod(9, 52) r2=9,r1=2;Mod(22, 52) r2=9,r1=3;Mod(35, 52)
"2"カード配置
r2=10,r1=0;Mod(36, 52) r2=10,r1=1;Mod(49, 52) r2=10,r1=2;Mod(10, 52) r2=10,r1=3;Mod(23, 52)
"5"カード配置
r2=11,r1=0;Mod(24, 52) r2=11,r1=1;Mod(37, 52) r2=11,r1=2;Mod(50, 52) r2=11,r1=3;Mod(11, 52)
"8"カード配置
r2=12,r1=0;Mod(12, 52) r2=12,r1=1;Mod(25, 52) r2=12,r1=2;Mod(38, 52) r2=12,r1=3;Mod(51, 52)

 このように余りの状態によって52枚のカードが一対一に対応する。

 このように52枚の順番に仕込んでおくと、ボトムにあるカードの情報だけで、すべてのカード
の位置を即座に判断することが可能にできる。

 デックのボトムカードのマークと数字を(S,B)、探すカードのマークと数字を(M,N)で表す。
ただしマークの数字へのよみかえは、

 ダイア--->0 、クラブ--->1 、ハート--->2 、スペード->3

 また、数字のK-->0, またはそのまま13でもよい、とする。

 行列Gを、

 G(M,N,S,B)=[M-S,4;N-B,13] (第1行をマークの変動数、第2行を数字の変動数)

で置き(変動行列とでも名付けたい)、その行列式を52で割った余りKを、

 ? K(M,N,S,B)=matdet(G(M,N,S,B))%52

で計算すると、

? for(i=0,3,for(j=0,12,print("i=",i,";j=",j,"-->",K(i,j,3,11))))

i=0;j=0-->5 、i=0;j=1-->1 、i=0;j=2-->49 、i=0;j=3-->45 、i=0;j=4-->41 、i=0;j=5-->37
i=0;j=6-->33 、i=0;j=7-->29 、i=0;j=8-->25 、i=0;j=9-->21 、i=0;j=10-->17 、i=0;j=11-->13
i=0;j=12-->9 、i=1;j=0-->18 、i=1;j=1-->14 、i=1;j=2-->10 、i=1;j=3-->6 、i=1;j=4-->2
i=1;j=5-->50 、i=1;j=6-->46 、i=1;j=7-->42 、i=1;j=8-->38 、i=1;j=9-->34 、i=1;j=10-->30
i=1;j=11-->26 、i=1;j=12-->22 、i=2;j=0-->31 、i=2;j=1-->27 、i=2;j=2-->23 、i=2;j=3-->19
i=2;j=4-->15 、i=2;j=5-->11 、i=2;j=6-->7 、i=2;j=7-->3 、i=2;j=8-->51 、i=2;j=9-->47
i=2;j=10-->43 、i=2;j=11-->39 、i=2;j=12-->35 、i=3;j=0-->44 、i=3;j=1-->40 、i=3;j=2-->36
i=3;j=3-->32 、i=3;j=4-->28 、i=3;j=5-->24 、i=3;j=6-->20 、i=3;j=7-->16 、i=3;j=8-->12
i=3;j=9-->8 、i=3;j=10-->4 、i=3;j=11-->0 、i=3;j=12-->48

となり、計算に慣れればボトムのカードをちらりと覧るだけで、相手が要求するカードの位置
をすぐに手に入れられる。イメージはZ4とZ13で張られた平面上でのベクトルの変異が変動
行列式で処理される雰囲気を持つ。

 もちろんデックのカットを何回やってもその構造は崩れない。(シャッフルは厳禁)

 規則的に並べられていることを発見されるのが恐れられる場合には、数字の順番を

   8->K->3->10->2->7->9->5->Q->4->A->6->J
 {Eight king threa-tened to save nine fair ladies for one sick knave.}
8人の王様が一人の病気の王子(knaveにはJカードの意味がある。)のために、9人の麗人を救うように脅された。

や、 5->9->10->K,->J->2->4->6,->Q->A->7->8->3
   {極道親父、  兵隊にしろ、 奥様ひと悩み}

で工夫してみるとよいかも。

                                             投稿一覧に戻る