fri*_*itz 4 algorithm wolfram-mathematica
我的朋友向我提出这个问题; 感觉就像在这里分享一样.
鉴于一副牌,我们将它分成两组,并"交错"; 让我们将此操作称为"拆分连接".并在最终的套牌上重复相同的操作.
例如,{1,2,3,4}变为{1,2}&{3,4} (分裂),我们得到{1,3,2,4} (加入)
此外,如果我们有奇数卡,即{1,2,3},我们可以将其分为{1,2}和{3}(大半号优先),导致{1,3,2}
(即,n分为Ceil[n/2]&n-Ceil[n/2])
她问我的问题是:
为了让原来的甲板回来,需要多少这样的分裂连接?
这让我感到疑惑:
如果牌组有n张牌,那么在以下情况下所需的分割连接数是多少:
是否存在关联n和所需拆分连接数的简单模式/公式/概念?
我相信,在Mathematica中探索这是一件好事,特别是因为它提供了Riffle[]方法.
NPE*_*NPE 14
引用MathWorld:
出的混洗到n = 2,4的甲板,...返回到其原来的顺序所需要的数字是1,2,4,3,6,10,12,4,8,18,6,11, ......(Sloane的A002326),它只是2的乘法次序(mod n-1).例如,52张一副扑克牌因此被返回到其原始状态后八段-洗牌,由于2**8 = 1(MOD 51)(哥伦布1961).的需要1,2,3,...出混洗以返回到甲板的原始状态卡2n个最小号是1,2,4,3,16,5,64,9,37,6,.. (斯隆的A114894).
的情况下n为奇数没有解决.
请注意,该文章还包括一个Mathematica笔记本,其中包含探索out-shuffle的功能.
如果我们有奇数卡n==2m-1,并且如果我们拆分卡片,那么在每次洗牌期间,第一组包含m卡片,第二组m-1卡片,并且组合在一起,使得同一组中的两张卡片最终不会相邻另外,那么所需的洗牌次数等于MultiplicativeOrder[2, n].
为了证明这一点,我们注意到,一个洗牌这是在位置上的卡后,k已经转移到位置2k的0<=k<m,并2k-2m+1为m<=k<2m-1,其中k是这样的0<=k<2m-1.书面模数n==2m-1这意味着新职位Mod[2k, n]适合所有人0<=k<n.因此,对于每个卡恢复到原来的位置,我们需要N洗牌,其中N是这样的,Mod[2^N k, n]==Mod[k, n]对于所有0<=k<n从它遵循N的任何倍数MultiplicativeOrder[2, n].
请注意,由于对称性,如果我们以相反的方式拆分牌组,结果将完全相同,即第一组总是包含m-1牌和第二组m牌.我不知道如果你交替会发生什么,即对于奇怪的洗牌,第一组包含m牌,甚至是随机m-1牌.