置換(Permutation)の計算 山中和義 2007/10/30 11:38:21 (修正1回) └つづき 山中和義 2007/10/30 11:39:25 (修正1回) ├サンプル(あみだくじ、カードのシャッフル... 山中和義 2007/10/30 11:42:06 (修正2回)
Re: つづき |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2007/10/30 11:42:06 ** この記事は2回修正されてます | |
サンプル(あみだくじ、カードのシャッフル)
サブルーチン部分は省略 !main !5本のあみだくじをつくる !A=(2 3)(1 2)(3 4)(2 3)(4 5)(3 4)(2 3) DIM A(5),B(5) PRINT "1 2 3 4 5" !上から順に、 PRINT "│││││" CALL PermIdentity(A) PRINT "│├┤││" !2本目と3本目に横線を引く CALL PermTransposition(2,3,B) CALL PermMultiply(B,A, A) PRINT "││├┤│" !3本目と4本目に CALL PermTransposition(3,4,B) CALL PermMultiply(B,A, A) PRINT "│││├┤" !4本目と5本目に CALL PermTransposition(4,5,B) CALL PermMultiply(B,A, A) PRINT "│├┤││" !2本目と3本目に CALL PermTransposition(2,3,B) CALL PermMultiply(B,A, A) PRINT "││├┤│" !3本目と4本目に CALL PermTransposition(3,4,B) CALL PermMultiply(B,A, A) PRINT "├┤│││" !1本目と2本目に CALL PermTransposition(1,2,B) CALL PermMultiply(B,A, A) PRINT "│├┤││" !2本目と3本目に CALL PermTransposition(2,3,B) CALL PermMultiply(B,A, A) PRINT "│││││" CALL PermPrintOut(A) DIM Q(20,20) CALL PermCyclicForm(A, Q,n) !巡回置換の積へ CALL PermCyclicMultiplyPrintOut(n,Q) DIM T(20,3) CALL PermTranspositionForm(A, T,n) !(隣接)互換の積へ CALL PermCyclicMultiplyPrintOut(n,T) !トランプカードのリフルシャッフル(左右のカードを1枚ずつ交互に重ねていく) LET m=52 !枚数 !1枚目のカードは、1枚目へ !2枚目のカードは、3枚目へ !3枚目のカードは、5枚目へ ! : !52枚目のカードは、52枚目へ !のように、移動先を記述する。 DATA 1,3,5,7,9,11,13,15,17,19, 21,23,25,27,29,31,33,35,37,39, 41,43,45,47,49,51 DATA 2,4,6,8,10,12,14,16,18,20, 22,24,26,28,30,32,34,36,38,40, 42,44,46,48,50,52 !LET m=20 !DATA 1,3,5,7,9,11,13,15,17,19, 2,4,6,8,10,12,14,16,18,20 DIM s(m) MAT READ s DIM ss(m) CALL PermIdentity(ss) !初期値 FOR k=1 TO 20 !回数 CALL PermMultiply(s,ss,ss) !シャッフル PRINT "K=";k CALL PermPrintOut(ss) !何回か実行すると元に戻る NEXT k END |
│└!置換行列 山中和義 2007/10/31 19:32:35 ├!15パズルをつくる 山中和義 2007/10/30 21:46:16 (修正3回) └!ルービックキューブ(Rubik'scube、magicc... 山中和義 2007/11/01 21:07:01 (修正1回) └つづき 山中和義 2007/11/01 21:10:06 (修正1回)