# prac1101.rb class TRYnode attr_accessor :data attr_accessor :arc def initialize @data = nil @arc = Array.new(256,nil) end end class TRY def initialize @root = TRYnode.new end def entry_word( word, mean ) n = @root word.size.times{|i| hlc = word[i] if n.arc[hlc] == nil n.arc[hlc] = TRYnode.new end n = n.arc[hlc] } n.data = mean.dup end def load_dictionary( filename ) fp = File::open(filename,'r') fp.each{|line| if /^([^\s]+)\s+([^\n]+)$/ =~ line self.entry_word( $1, $2 ) end } end def show( n = @root, str = "" ) if n.data != nil print str+","+n.data+"\n" else for i in 0...256 do if n.arc[i] != nil tmp = str + " " tmp[str.size] = i show( n.arc[i], tmp ) end end end end end # メインルーチン dic = TRY.new dic.load_dictionary('dictionary1.dic') dic.show