home *** CD-ROM | disk | FTP | other *** search
- ############################################################################
- #
- # File: shuffile.icn
- #
- # Subject: Program to shuffle lines in a file
- #
- # Author: Ralph E. Griswold
- #
- # Date: June 10, 1988
- #
- ###########################################################################
- #
- # This program writes a version of the input file with the lines
- # shuffled. For example, the result of shuffling
- #
- # On the Future!-how it tells
- # Of the rapture that impells
- # To the swinging and the ringing
- # Of the bells, bells, bells-
- # Of the bells, bells, bells, bells,
- # Bells, bells, bells-
- # To the rhyming and the chiming of the bells!
- #
- # is
- #
- # To the rhyming and the chiming of the bells!
- # To the swinging and the ringing
- # Bells, bells, bells-
- # Of the bells, bells, bells-
- # On the Future!-how it tells
- # Of the bells, bells, bells, bells,
- # Of the rapture that impells
- #
- # Option: The option -s n sets the seed for random generation to n.
- # The default seed is 0.
- #
- # Limitation:
- #
- # This program stores the input file in memory and
- # shuffles pointers to the lines; there must be enough memory
- # available to store the entire file.
- #
- ############################################################################
- #
- # Links: options, shuffle
- #
- ############################################################################
-
- link options, shuffle
-
- procedure main(args)
- local opts, a
-
- opts := options(args, "s+")
- &random := \opts["s"]
-
- a := []
- every put(a,!&input)
- every write(!shuffle(a))
- end
-