jQuery in Action, 3rd edition
The moose likes Ruby and the fly likes How to Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Languages » Ruby
Bookmark "How to "flatten" a Ruby array" Watch "How to "flatten" a Ruby array" New topic

How to "flatten" a Ruby array

Garrett Rowe
Ranch Hand

Joined: Jan 17, 2006
Posts: 1296
Ok so I'm trying to learn Ruby. My plan was to get a feel for the syntax by trying to work through Ninety-Nine Lisp Problems in Ruby. However I got stuck on Problem 7.

My test code looks like:

And my "my_flatten" method looks like:

But my code fails at my first assertion (Expected [] but was [[]]),

and if I comment that out it fails on my third assertion too:

Expected [1, 2, 3, 4, 5] but was [1, [2, 3], 4, 5].

Can any of you guys give me a nudge int the right direction?
[ February 18, 2008: Message edited by: Garrett Rowe ]

Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them. - Laurence J. Peter
Jim Yingst

Joined: Jan 30, 2000
Posts: 18671
It looks like your my_flatten will create a new array every time it's invoked - that's the first line, after all. But is that really what you want? A flattened array should have just one array, no matter how many times the method recurses, yes? In many cases you want to append new elements to an existing array, not create a new one. Can you think of a way to do that?

"I'm not back." - Bill Harding, Twister
I agree. Here's the link: http://aspose.com/file-tools
subject: How to "flatten" a Ruby array
It's not a secret anymore!