#!/usr/bin/perl -s
# determine Order
$keyLen = 3;
$keyLen = $k if ($k ne '');
$initKey = pack "a$keyLen", " ";
# determine Starting Phrase
$startKey = "Dear God, ";
$startKey = $s if ($s ne '');
print "InitKey: <$initKey> k=$k\n";
# Collect String
while (<>)
{
$instr .= $_;
}
# Construct Markov Chain
$key = $initKey;
while ($instr ne '')
{
$ch = substr($instr, 0, 1);
$ch = ' ' if $ch =~ /\s/;
$instr = substr($instr,1);
$mark{$key} .= $ch;
$key = substr($key,1) . $ch;
}
foreach $x (0..length($key)-1)
{
$mark{$key} .= ' ';
$key = substr($key,1) . ' ';
}
# Output Sample
$key = pack "a$keyLen", $startKey;
print $key;
$n = 0;
foreach $x (0..2000)
{
$ch = substr($mark{$key},int(rand(length($mark{$key}))),1);
if ($ch eq ' ' && $n > 70)
{
$n = 0;
print "\n";
}
else {
print $ch;
}
++$n;
$key = substr($key,1) . $ch;
}
#end
|