GAIさんへのお返事です。
> 偶数枚のカードで
> トップとボトムのカードを同時に引き出し、テーブルに置く。
> 次ぎも、同様に一緒に引き出しテーブルに出したカードの上に重ねて置く。
> これを繰り返し、手元のカードが無くなるまで続ける。
> これを1回目の操作とします。
> 再び、テーブルに重ねたカードを取り上げ2回目の操作をやる。
> 何回かこれを繰り返すとカードの順番が元の順序に戻る。
> <例>
> 20枚なら12回の操作で元に戻りました。
サンプルプログラム #1098 を使って
「シャッフルに相当する置換」を定義すると求まります。
置換は、「m番目のカードが、1回のシャッフルでn番目になる」という関係です。
DIM shuffle(N) !シャッフルに相当する置換
FOR i=1 TO INT(N/2)
LET shuffle(i)=N-(2*i-1)
LET shuffle(i+INT(N/2)+MOD(N,2))=2*i+MOD(N,2)
NEXT i
IF MOD(N,2)=1 THEN LET shuffle(INT(N/2)+1)=1
式が定義できない場合は、直接DATA文で値を設定してください。
DIM shuffle(N) !シャッフルに相当する置換
DATA 19,17,15,13,11,9,7,5,3,1, 2,4,6,8,10,12,14,16,18,20
MAT READ shuffle