home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
historic
/
v941.tgz
/
icon.v941src.tar
/
icon.v941src
/
ipl
/
progs
/
wshfdemo.icn
< prev
next >
Wrap
Text File
|
2000-07-29
|
2KB
|
69 lines
############################################################################
#
# File: wshfdemo.icn
#
# Subject: Program to demonstrate weighted shuffle procedure
#
# Author: Erik Eid
#
# Date: May 23, 1994
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# This program is a short demo of the WeightedShuffle procedure. The
# user is first prompted for a random number seed. Then, the user is asked
# to enter a size for the list to be shuffled and what percentage of that
# list to be shuffled. The original and shuffled lists are then displayed.
#
############################################################################
#
# Links: weighted
#
############################################################################
link weighted
procedure main()
local before, after, num, pct, yn, seed
write (center("Weighted Shuffle Demonstration", 80))
repeat {
writes ("Enter random number seed: ")
seed := read()
if seed == "" then break # Use default random seed.
if seed = integer(seed) then
break &random := seed # Use given random seed.
}
repeat {
repeat {
writes ("Size of list to shuffle (1-500)? ")
num := read()
if num = integer(num) then if (0 < num <= 500) then break
}
repeat {
writes ("Shuffle what percentage (0=none, 100=all)? ")
pct := read()
if pct = numeric(pct) then if (0 <= pct <= 100) then break
}
before := list()
every put (before, (1 to num))
write ("\nBefore shuffle:")
DisplayList (before)
after := WeightedShuffle (before, pct)
write ("\nAfter ", pct, "% shuffle:")
DisplayList (after)
writes ("\nDo another [Y/N]? ")
yn := getche()
write("\n")
if not (yn == ("Y" | "y")) then break
}
end
procedure DisplayList (L)
every writes (right(!L, 4))
end