@program poker-proto.muf 1 10000 d i : deck ( -- a ) { "2d" "2c" "2h" "2s" "3d" "3c" "3h" "3s" "4d" "4c" "4h" "4s" "5d" "5c" "5h" "5s" "6d" "6c" "6h" "6s" "7d" "7c" "7h" "7s" "8d" "8c" "8h" "8s" "9d" "9c" "9h" "9s" "0d" "0c" "0Jh" "0s" "Jd" "Jc" "Jh" "Js" "Qd" "Qc" "Qh" "Qs" "Kd" "Kc" "Kh" "Ks" "Ad" "Ac" "Ah" "As" "jj" "JJ" } array_make ; : shuffle ( a -- a ) var a1 var i1 var a2 var i2 a1 ! { } array_make a2 ! begin ( pick a random item ) random a1 @ array_count % i1 ! ( get it ) a1 @ i1 @ array_getitem i2 ! ( stick it in the new array ) i2 @ a2 @ array_appenditem a2 ! ( remove it from this one ) a1 @ i1 @ array_delitem a1 ! a1 @ array_count 0 = until a2 @ ; : main deck shuffle prog "D" set prog "!D" set ; . c q