aboutsummaryrefslogtreecommitdiff
path: root/markov-run.rb
diff options
context:
space:
mode:
authorNathan Lasseter <nathan@4574.co.uk>2014-01-19 12:05:49 +0000
committerNathan Lasseter <nathan@4574.co.uk>2014-01-19 12:05:49 +0000
commitf091c51626c1ef62c9e81e0b1207b46a0666f5bf (patch)
tree66cc85d93e1cdbca28481d3a3f3b2b8d9d845857 /markov-run.rb
parent7cbacfed6ea9ce55b1db181550f826a8ec085dfe (diff)
Changed the serialisation to use single word follow-ons. Added the number of generations argument to markov-run. Changed the length argument from number of achunks to the total words in the generation. Removed the "Starts with a capital" requirement.
Diffstat (limited to 'markov-run.rb')
-rwxr-xr-xmarkov-run.rb26
1 files changed, 15 insertions, 11 deletions
diff --git a/markov-run.rb b/markov-run.rb
index ef81315..991c5e7 100755
--- a/markov-run.rb
+++ b/markov-run.rb
@@ -2,7 +2,11 @@
PRNG = Random.new(Time.now.to_i)
-stats = Marshal::load(File.open(ARGV[0]).read)
+STATS = Marshal::load(File.open(ARGV[0]).read)
+
+CHUNK = STATS["__SETTINGS__"]["__CHUNK__"]
+
+NUM = (ARGV[2] or "1").to_i
def cfd(hash)
tot = 0
@@ -19,17 +23,17 @@ def sel(hash)
}
end
-current = stats.keys.select{|k|k.first.match(/^[A-Z]/)}.sample
-
-print "#{current.join(" ")} "
-
-def achunk(chunk, hash)
+def aword(chunk, hash)
sel(cfd(hash[chunk]))
end
-(ARGV[1].to_i - 1).times do
- current = achunk(current, stats)
- print "#{current.join(" ")} "
-end
+NUM.times do
+ current = STATS.keys.select{|k| k != "__SETTINGS__" }.sample
+
+ (ARGV[1].to_i - CHUNK).times do
+ current << aword(current[-CHUNK..-1], STATS)
+ end
-puts
+ puts current.join(" ")
+ puts
+end