Hi.
How can I parse a tree (arrays within arrays), for example a tree of
strings, to print all strings ?
Thanks.
Hi.
How can I parse a tree (arrays within arrays), for example a tree of
strings, to print all strings ?
Thanks.
Haris wrote:
Hi.
How can I parse a tree (arrays within arrays), for example a tree of strings, to print all strings ?
Thanks.
tree walking hints at a recursive routine...
def tree_walk(array)
array.each do |item|
if item.class == Array
tree_walk(item)
else
puts item
end
end
end
or for the one-liners among us
def tree_walk(array)
array.each { |item| (item.class == Array)? tree_walk(item) : puts item }
end
However, I don't reccomend testing on the item.class. I can't explain why very well, but it seems wrong to me. Maybe someone else can...?
Do you want to _parse_ or _print_? This is totally unclear to me. For displaying nested structures for debugging purposes, pp will do
require 'pp'
a = [...] # nested
pp a
If you want to parse: you did not provide how the input looks like so nobody could help you with that.
Kind regards
robert
On 04.03.2009 03:51, Haris Bogdanoviæ wrote:
How can I parse a tree (arrays within arrays), for example a tree of strings, to print all strings ?
#..
# def tree_walk(array)
# array.each { |item| (item.class == Array)?
^^^^^^^^^^^^^^^^^^^^
item.is_a? Array
# tree_walk(item) : puts item }
# end
note that the above tree_walk is equivalent to,
puts array
From: Michael Malone [mailto:michael.malone@tait.co.nz]
Michael Malone wrote:
However, I don't reccomend testing on the item.class. I can't explain
why very well, but it seems wrong to me. Maybe someone else can...?
I think it's fine. You need some way to distinguish between a leaf node
and an inner node, and how you do that depends on how your data
structure is built.
Here, the assumption is that inner nodes are Arrays and leaf nodes are
anything else.
--
Posted via http://www.ruby-forum.com/\.