27 lines
790 B
Plaintext
27 lines
790 B
Plaintext
divert(-1)
|
|
define(`set',`define(`$1[$2]',`$3')')
|
|
define(`get',`defn(`$1[$2]')')
|
|
define(`setrange',`ifelse(`$3',`',$2,`define($1[$2],$3)`'setrange($1,
|
|
incr($2),shift(shift(shift($@))))')')
|
|
define(`for',
|
|
`ifelse($#,0,``$0'',
|
|
`ifelse(eval($2<=$3),1,
|
|
`pushdef(`$1',$2)$4`'popdef(`$1')$0(`$1',incr($2),$3,`$4')')')')
|
|
define(`show',
|
|
`for(`k',0,decr($1),`get(a,k) ')')
|
|
|
|
define(`chklim',
|
|
`ifelse(get(`a',$3),eval($2-($1-$3)),
|
|
`chklim($1,$2,decr($3))',
|
|
`set(`a',$3,incr(get(`a',$3)))`'for(`k',incr($3),decr($2),
|
|
`set(`a',k,incr(get(`a',decr(k))))')`'nextcomb($1,$2)')')
|
|
define(`nextcomb',
|
|
`show($1)
|
|
ifelse(eval(get(`a',0)<$2-$1),1,
|
|
`chklim($1,$2,decr($1))')')
|
|
define(`comb',
|
|
`for(`j',0,decr($1),`set(`a',j,j)')`'nextcomb($1,$2)')
|
|
divert
|
|
|
|
comb(3,5)
|