ひいらぎさんへのお返事です。
> n個のビット列でr個の1を含むパターンの総数nCrに
> 通し番号をつけて生成する、というものです。
LET N=5
LET R=3
FOR i=0 TO COMB(N,R)-1 !全パターン
PRINT i
CALL Num2Comb(i,A,N,R) !番号は0~
PRINT BSTR$(A,2); A
NEXT i
END
EXTERNAL SUB Num2Comb(h, A,N,R) !番号から組合せパターンを生成する ※辞書式順序
LET v=COMB(N,R)-h
LET j=R
LET A=0
FOR i=N-1 TO 0 STEP -1 !組合せをビット位置とする
LET t=COMB(i,j)
IF v>t THEN
LET A=A+2^(N-i-1) !ビット位置(N-i-1)を1とする
LET j=j-1
LET v=v-t
END IF
NEXT i
END SUB
集合A={1,2,3,4,5}
{1,2,3}
{1,2,4}
:
{4,5,6}
では、こちら(No.675 [元記事へ])を参照してください。