From 214e8900240e2f98fba5b1553ed792ad8ff6f56f Mon Sep 17 00:00:00 2001 From: Nathan Lasseter Date: Sun, 19 Jan 2014 12:47:38 +0000 Subject: Renames and refactored run --- markov-generate.rb | 38 ++++++++++++++++++++++++++++++++++++++ markov-run.rb | 39 --------------------------------------- 2 files changed, 38 insertions(+), 39 deletions(-) create mode 100755 markov-generate.rb delete mode 100755 markov-run.rb diff --git a/markov-generate.rb b/markov-generate.rb new file mode 100755 index 0000000..36d80a1 --- /dev/null +++ b/markov-generate.rb @@ -0,0 +1,38 @@ +module Markov + class Generator + def initialize(inputfile) + @prng = Random.new(Time.now.to_i) + @stats = Marshal::load(File.open(inputfile).read) + @chunklength = @stats["__SETTINGS__"]["__CHUNKLENGTH__"] + end + + def cfd(hash) + tot = 0 + hash.each_pair {|k, v| + hash[k] = tot += v + } + end + + def sel(hash) + max = hash.values.max + r = @prng.rand(max*100000) % max + hash.each_pair {|k, v| + return k if r < v + } + end + + def aword(chunk, hash) + sel(cfd(hash[chunk])) + end + + def generate(length) + current = @stats.keys.select{|k| k != "__SETTINGS__" }.sample + + (length - @chunklength).times do + current << aword(current[-@chunklength..-1], @stats) + end + + puts current.join(" ") + end + end +end diff --git a/markov-run.rb b/markov-run.rb deleted file mode 100755 index 991c5e7..0000000 --- a/markov-run.rb +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env ruby - -PRNG = Random.new(Time.now.to_i) - -STATS = Marshal::load(File.open(ARGV[0]).read) - -CHUNK = STATS["__SETTINGS__"]["__CHUNK__"] - -NUM = (ARGV[2] or "1").to_i - -def cfd(hash) - tot = 0 - hash.each_pair {|k, v| - hash[k] = tot += v - } -end - -def sel(hash) - max = hash.values.max - r = PRNG.rand(max*100000) % max - hash.each_pair {|k, v| - return k if r < v - } -end - -def aword(chunk, hash) - sel(cfd(hash[chunk])) -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 current.join(" ") - puts -end -- cgit v1.2.1