/frames 8 def /rows 8 def /NN 111 def /MM 90 def /N NN def /M NN def /SNAP NN NN 8 div sub def /Ndots NN def %include /u/rs/book3/pslib/tools.ps %include /u/rs/book3/pslib/dots.ps /swap {/ii exch def /jj exch def A ii get /t exch def A ii A jj get put A jj t put } def /partition { /r exch def /l exch def /v A r get def /j r def /i l 1 sub def { { /j j 1 sub def A j get v le { exit } if } loop { /i i 1 add def A i get v ge { exit } if } loop j i lt { exit } if j i swap } loop r i swap ARRAY i } def /quicksort { 2 copy partition 1 sub dup 2 add 3 -1 roll % l i-1 i+1 r 2 copy exch sub MM gt { quicksort } { pop pop } ifelse 2 copy exch sub MM gt { quicksort } { pop pop } ifelse } def /N 111 def /MM 2 def newRow N randomperm /A exch def /A [0 A aload pop ] def /LL 1 def /RR N 1 sub def ARRAY LL RR quicksort ARRAY newRow newRow /N 101 def /MM 16 def newRow N randomperm /A exch def /A [0 A aload pop ] def /LL 1 def /RR N 1 sub def ARRAY LL RR quicksort /compareswap {/jj exch def /ii exch def A ii get A jj get gt { jj ii swap} if } def /partition { /r exch def /l exch def /mm r l sub 2 idiv l add def l mm compareswap l r compareswap mm r compareswap mm r 1 sub swap /v A r 1 sub get def /j r 1 sub def /i l def { { /j j 1 sub def A j get v le { exit } if } loop { /i i 1 add def A i get v ge { exit } if } loop j i lt { exit } if j i swap } loop r 1 sub i swap ARRAY i } def newRow newRow /N 101 def /MM 16 def newRow N randomperm /A exch def /A [0 A aload pop ] def /LL 1 def /RR N 1 sub def ARRAY LL RR quicksort ARRAY