#!/usr/local/bin/ruby

class MarkovGenerater
  def initialize(filename)
	@next = Hash.new
	@keys = Array.new
	@prefix = "\0"

	File.new(filename).each { |line|
		line.chomp!
		for i in 0...line.length/2
			add(line[i*2,2])
		end
		add("\0")
	}

	@prefix = @keys[rand(@keys.size)]
  end

  def add(str)
	if (@next[@prefix] == nil) then
		@next[@prefix] = [str]
		if (str != "\0") then
			@keys.push(@prefix)
		end
	else
		@next[@prefix].push(str)
	end
	@prefix = str
  end

  def generate
    ret = ""
  	key = @keys[rand(@keys.size)]
	while (key != "\0")
	    ret += key
		n = @next[key]
		key = n[rand(n.size)]
	end

	return ret
  end

end

print "Content-Type: text/html; charset=EUC-JP\n\n"

markov = MarkovGenerater.new("spells.txt")
print markov.generate() + "<br>\n"

print '<form><input type="submit" value="€β€¦°μΕΩ"></form>'

prevlen = 0
times = 0
while 1
	times += 1
	now = markov.generate
	if (now.length > prevlen) then
		print times.to_s + ": " + now + "\n"
		prevlen = now.length
	end
end

