Explicación del código Ruby para construir estructuras de datos Trie
Así que tengo este código rubí que tomé de Wikipedia y modifiqué un poco:
@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
Primero ejecuté esto en la consola irb, y cada vez que salíanode
, me sigue dando un hash vacío cada vez que{}
, pero cuando invoco esa función construir con el parámetro'dogs'
string, en realidad funciona y genera{"d"=>{"o"=>{"g"=>{"s"=>{}}}}}
, lo cual es totalmente correcto.
Esta es probablemente más una pregunta de Ruby que la pregunta real sobre cómo funciona el algoritmo. Realmente no tengo el conocimiento adecuado de Ruby para descifrar lo que está sucediendo allí, supongo.