プログラムのお願い。

 投稿者:GAI  投稿日:2010年 2月24日(水)16時17分14秒
  1~8のカードから
2枚ずつ4組を構成するすべてのパターン(8C2×6C2×4C2/4!=105)
を表示させたい。
これのプログラムをお願いします。
 

Re: プログラムのお願い。

 投稿者:山中和義  投稿日:2010年 2月24日(水)19時49分51秒
  > No.1049[元記事へ]

GAIさんへのお返事です。

> 1~8のカードから
> 2枚ずつ4組を構成するすべてのパターン(8C2×6C2×4C2/4!=105)
> を表示させたい。
DIM A$(105) !全パターン 例. 12345678なら、(1,2)(3,4)(5,6)(7,8)と読む
LET C=1
FOR i=2 TO 8 !1組目(1,i) ※comb(8,2)/4=7通り
   LET w$="12345678" !restore it

   LET A$(C)=w$(1:1)&w$(i:i) !その2つを抜き取って、連番を再構成する
   LET w$(i:i)=""
   LET w$(1:1)=""

   FOR j=2 TO 6 !2組目(1,j) ※comb(6,2)/3=5通り
      LET x$=w$ !restore it

      LET A$(C)=A$(C)(1:2)&x$(1:1)&x$(j:j)
      LET x$(j:j)=""
      LET x$(1:1)=""

      FOR k=2 TO 4 !3組目(1,k) ※comb(4,2)/2=3通り
         LET y$=x$ !restore it

         LET A$(C)=A$(C)(1:4)&y$(1:1)&y$(k:k)
         LET y$(k:k)=""
         LET y$(1:1)=""

         LET A$(C)=A$(C)&y$ !4組目 ※comb(2,2)/1=1通り

         PRINT C;": ";A$(C) !結果を表示する

         LET C=C+1
         IF C<=105 THEN LET A$(C)=A$(C-1)(1:4) !copy it
      NEXT k
   NEXT j
NEXT i

END
 

戻る