Skip to content

Instantly share code, notes, and snippets.

@filipemonteiroth
Created September 24, 2017 17:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save filipemonteiroth/66753651a26de7c7727ea4129be47723 to your computer and use it in GitHub Desktop.
Save filipemonteiroth/66753651a26de7c7727ea4129be47723 to your computer and use it in GitHub Desktop.
Flatten array in Ruby

That's a homebrewed flatten array method.

Tests

Run ruby flatten_spec.rb to make sure everything is working.

Minitest

I used ministest since that's a simple test and minitest is a built in lib.

def flatten(array)
new_array = []
array.each do |element|
if element.kind_of?(Array)
new_array += flatten(element)
else
new_array << element
end
end
new_array
end
require 'minitest/autorun'
require ('./flatten.rb')
describe "Flatten" do
before do
@simple_array = [1,2,3]
@multiples_array = [[1,2,[3]],4]
@complex_array = [1,2,[3,[4,5,[6,[7,[8, 9, 10, 11, [[], [12], [13], [[], [14]]]]]]]]]
end
describe "#flatten" do
it "returns the passed array if is a simple array" do
flatten_array = flatten(@simple_array)
flatten_array.must_equal [1,2,3]
end
it "flattens an array recursively when array has array elements" do
flatten_array = flatten(@multiples_array)
flatten_array.must_equal [1,2,3,4]
end
it "flattens an array recursively on a complex array element" do
flatten_array = flatten(@complex_array)
flatten_array.must_equal [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment