n個の項目のすべてのサブセットを変化量の小さい順に生成します。
カテゴリ: | 組み合わせ |
制限事項: | GRAYCODE関数は、%SYSFUNCマクロを使用する場合には実行できません。 |
数値変数を指定します。GRAYCODE関数を実行する前にkを次のいずれかの値に初期化します。
値0または値1の数値変数を指定します。この値はGRAYCODEの実行時に更新されます。numeric-variable-jの値が1の場合、j番目の項目がサブセットにあることを表します。numeric-variable-jの値が0の場合、j番目の項目がサブセットにないことを表します。
長さが少なくともn文字の文字変数を指定します。先頭のn文字でどの項目がサブセットにあるかを示します。デフォルトでは、j番目の位置にある"I"はj番目の項目がサブセットにあることを示し、j番目の位置にある"O"はj番目の項目がサブセットにないことを示します。これらの2文字はin-out引数の指定で変更できます。
data _null_; array x[4]; n=dim(x); k=-1; nsubs=2**n; do i=1 to nsubs; rc=graycode(k, of x[*]); put i 5. +3 k= ' x=' x[*] +3 rc=; end; run;
1 k=0 x=0 0 0 0 rc=0 2 k=1 x=1 0 0 0 rc=1 3 k=2 x=1 1 0 0 rc=2 4 k=1 x=0 1 0 0 rc=1 5 k=2 x=0 1 1 0 rc=3 6 k=3 x=1 1 1 0 rc=1 7 k=2 x=1 0 1 0 rc=2 8 k=1 x=0 0 1 0 rc=1 9 k=2 x=0 0 1 1 rc=4 10 k=3 x=1 0 1 1 rc=1 11 k=4 x=1 1 1 1 rc=2 12 k=3 x=0 1 1 1 rc=1 13 k=2 x=0 1 0 1 rc=3 14 k=3 x=1 1 0 1 rc=1 15 k=2 x=1 0 0 1 rc=2 16 k=1 x=0 0 0 1 rc=1
data _null_; x='++++'; n=length(x); k=countc(x, '+'); put ' 1' +3 k= +2 x=; nsubs=2**n; do i=2 to nsubs; rc=graycode(k, x, n, '+-'); put i 5. +3 k= +2 x= +3 rc=; end; run;
1 k=4 x=++++ 2 k=3 x=-+++ rc=1 3 k=2 x=-+-+ rc=3 4 k=3 x=++-+ rc=1 5 k=2 x=+--+ rc=2 6 k=1 x=---+ rc=1 7 k=0 x=---- rc=4 8 k=1 x=+--- rc=1 9 k=2 x=++-- rc=2 10 k=1 x=-+-- rc=1 11 k=2 x=-++- rc=3 12 k=3 x=+++- rc=1 13 k=2 x=+-+- rc=2 14 k=1 x=--+- rc=1 15 k=2 x=--++ rc=4 16 k=3 x=+-++ rc=1