Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
27
Task/Knuth-shuffle/M4/knuth-shuffle.m4
Normal file
27
Task/Knuth-shuffle/M4/knuth-shuffle.m4
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
divert(-1)
|
||||
define(`randSeed',141592653)
|
||||
define(`rand_t',`eval(randSeed^(randSeed>>13))')
|
||||
define(`random',
|
||||
`define(`randSeed',eval((rand_t^(rand_t<<18))&0x7fffffff))randSeed')
|
||||
define(`for',
|
||||
`ifelse($#,0,``$0'',
|
||||
`ifelse(eval($2<=$3),1,
|
||||
`pushdef(`$1',$2)$4`'popdef(`$1')$0(`$1',incr($2),$3,`$4')')')')
|
||||
define(`set',`define(`$1[$2]',`$3')')
|
||||
define(`get',`defn($1[$2])')
|
||||
define(`new',`set($1,size,0)')
|
||||
define(`deck',
|
||||
`new($1)for(`x',1,$2,
|
||||
`set(`$1',x,x)')`'set(`$1',size,$2)')
|
||||
define(`show',
|
||||
`for(`x',1,get($1,size),`get($1,x)`'ifelse(x,get($1,size),`',`, ')')')
|
||||
define(`swap',`set($1,$2,get($1,$4))`'set($1,$4,$3)')
|
||||
define(`shuffle',
|
||||
`define(`s',get($1,size))`'for(`x',1,decr(s),
|
||||
`swap($1,x,get($1,x),eval(x+random%(s-x+1)))')')
|
||||
divert
|
||||
|
||||
deck(`b',52)
|
||||
show(`b')
|
||||
shuffle(`b')
|
||||
show(`b')
|
||||
Loading…
Add table
Add a link
Reference in a new issue