The algorithm starts by printing a number of consecutive words (or letters) from the source text. Then it searches the source text for an occurrence of few last words or letters printed out so far. If multiple occurrences are found, it picks a random one, and proceeds with printing text following the chosen occurrence. After predetermined length of text was printed out, the search procedure is repeated for the newly-printed ending.
Considering that words and phrases tend to appear in specific grammatical contexts, the resulting text usually seems correct grammatically, and if the source text is uniform in style, the result appears to be of similar style and subject, and takes some effort on the reader side to recognize as not genuine. Still, the randomness of the assembly process deprives it of any logical flow - the loosely related parts are connected in nonsensical way, creating a humorously abstract, random result.
- wart: n. A small, crocky feature that sticks out of an array (C has no checks for this). This is relatively benign and easy to spot if the phrase is bent so as to be not worth paying attention to the medium in question.
Here is a short example of letter-based Dissociated Press applied to the same source:
- window sysIWYG: n. A bit was named aften /bee´t@/ prefer to use the other guy's re, especially in every cast a chuckle on neithout getting into useful informash speech makes removing a featuring a move or usage actual abstractionsidered interj. Indeed spectace logic or problem!
The dissociated press algorithm is described in HAKMEM (1972) Item #176. The name "dissociated press" is first known to have been associated with the Emacs implementation.
When he got on the table, he come in. He never come out of my own pocket as a measure of protecting the company against riot and bloodshed. And when he said. "You tell me a bus ticket, let alone write out no case histories. Then the law come back with a knife!"
Hugh Kenner and Joseph O'Rourke of The Johns Hopkins University discussed their frequency table-based Travesty generator for microcomputers in BYTE in November 1984. The article included the Turbo Pascal source for two versions of the generator, one using Hayes' algorithm and another using Claude Shannon's Hellbat algorithm. Murray Lesser offered a compiled BASIC version in the magazine in July 1985, in September 1985 Peter Wayner offered a version that used tree data structures instead of frequency tables, and in December 1985 Neil J. Rubenking offered a version written in Turbo Pascal that stored frequency information in a B-tree.
- Burke, Sean M. and Avi Finkel. Games::Dissociate distribution in CPAN. Retrieved 2012-11-13. Most recent release: 2010, "v1.0".
- Raymond, Eric S. (2003-12-29). "Dissociated Press". Jargon File 4.4.7. Retrieved 2007-04-10.
- Kenner, Hugh; O'Rourke, Joseph (1984-11). "A Travesty Generator for Micros". BYTE. p. 129. Retrieved 23 October 2013.
- Lesser, Murray (1985-07). "Travesty Revisited". BYTE. p. 163. Retrieved 27 October 2013.
- Wayner, Peter (1985-09). "Build a Travesty Tree". BYTE. p. 183. Retrieved 27 October 2013.
- Rubenking, Neil J. (1985-12). "Travesty with Database". BYTE. p. 161. Retrieved 28 October 2013.
- Emacs documentation on Dissociated Press
- Dissociated Press in the Jargon File
- Dissociated Press on celebrity Twitter feeds
This article is based in part on the Jargon File, which is in the public domain.