Title: Random Writer
1Random Writer
- Joe Zachary
- School of Computing
- University of Utah
2Random Writer
- Based on an idea by Claude Shannon (1948)
popularized by A.K. Dewdney (1989) - Generates random text based on the patterns in a
source file - Both fun and appropriate for CS 2 students
- Uses file input/output, string manipulation,
dynamic linear data structures, and random number
generation
3King James Bible
For every man putteth one and my mother for
them, to David sent Samson, and a sacrifice.
Then went Samson down, and his father and his
mother, to Timnath, and came to the vineyards of
Timnath and, behold, a young lion roared against
him.
Now the ark and treasures upon them and, Who
also in the evil so do your heart?
4King James Bible (Level 6)
For every man putteth one and my mother for
them, to David sent Samson, and a sacrifice.
Then went Samson down, and his father and his
mother, to Timnath, and came to the vineyards of
Timnath and, behold, a young lion roared against
him.
Now the ark and treasures upon them and, Who
also in the evil so do your heart?
5Tom Sawyer
Huck started to act very intelligently on the
back of his pocket behind, as usual on Sundays.
He was always dressed fitten for drinking some
old empty hogsheads.
The men contemplated the treasure awhile in
blissful silence.
6Tom Sawyer (Level 8)
Huck started to act very intelligently on the
back of his pocket behind, as usual on Sundays.
He was always dressed fitten for drinking some
old empty hogsheads.
The men contemplated the treasure awhile in
blissful silence.
7Hamlet
Ay me, what act, That roars so loud and thunders
in the index?
Worse that a rat? Dead for a ducat, drugs fit
that I bid you not?
Leave heart for to our lord, it we show him, but
skin and he, my lord, I have fat all not over
thought, good my lord?
8Hamlet (Level 5)
Ay me, what act, That roars so loud and thunders
in the index?
Worse that a rat? Dead for a ducat, drugs fit
that I bid you not?
Leave heart for to our lord, it we show him, but
skin and he, my lord, I have fat all not over
thought, good my lord?
9C Programs
int temp A0 Ai-1 Aj C((Aj)(shift
8)) 0xff 1
node m_pTop m_pTop pNext while (p!end) res
0
int hash code hash()(key) float A
(sqrt(5)-1)/2 int index floor(buckets
(hashcode A - floor(hashcode A)))
10C Programs (Level 7)
int temp A0 Ai-1 Aj C((Aj)(shift
8)) 0xff 1
node m_pTop m_pTop pNext while (p!end) res
0
int hash code hash()(key) float A
(sqrt(5)-1)/2 int index floor(buckets
(hashcode A - floor(hashcode A)))
11Niftiness
- Not a toy it slurps up entire books
- Defies expectations it turns out to be both
straightforward and educational - Entertaining I run a contest to find the
funniest generated text
12Level 0
The probability that c is the next character to
be produced equals the probability that c occurs
in the source file.
rla bsht eS ststofo hhfosdsdewno oe wee h .mr ae
irii ela iad o r te u t mnyto onmalysnce, ifu en
c fDwn oee iteo
13Level 1
Let s be the previously produced character. The
probability that c is the next character to be
produced equals the probability that c follows s
in the source text.
"Shand tucthiney m?" le ollds mind Theybooure He,
he s whit Pereg lenigabo Jodind alllld ashanthe
ainofevids tre lin--p asto oun
14Level K
Let seed be the previously produced k (4 in this
case) characters. The probability that c is the
next character to be produced equals the
probability that c follows seed in the source
text.
Mr. Welshman, but him awoke, the balmy shore.
I'll give him that he couple overy because in the
slated snufflindeed structure's
15Algorithm
- Pick a random k-letter seed from the text
- Repeatedly
- Make a list of every character that follows the
seed in the text - Randomly pick a character c from the text
- Output c
- Remove the first character from the seed and
append c
16Example at Level 2
- Seed th
- Text We hold these truths to be
self-evident that all men are created equal
that they - List e, s, a, a, e
- Character s (20 of the time)
- New seed hs
17http//nifty.stanford.edu/