Итак, у меня есть этот рубиновый код, который я взял из википедии и немного изменил:
@trie = Hash.new()
def build(str)
node = @trie
str.each_char { |ch|
cur = ch
prev_node = node
node = node[cur]
if node == nil
prev_node[cur] = Hash.new()
node = prev_node[cur]
end
}
end
build('dogs')
puts @trie.inspect
Я сначала запускал его на консоли irb, и каждый раз выводил узел
, он просто продолжает выдавать мне пустой хеш каждый раз {}
, но когда я действительно вызываю эту сборку функции с параметром 'dog'
строка, это действительно работает, и выводит {"d" => {"o" => {"g" => {"s" => {}}}}}
, что совершенно верно.
Вероятно, это скорее вопрос Ruby, чем сам вопрос о том, как работает алгоритм. Думаю, у меня действительно недостаточно знаний Ruby, чтобы понять, что там происходит.