Skip to content

Instantly share code, notes, and snippets.

@meaganewaller
Last active August 29, 2015 14:16
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 meaganewaller/4c2b972d4f44205b209a to your computer and use it in GitHub Desktop.
Save meaganewaller/4c2b972d4f44205b209a to your computer and use it in GitHub Desktop.
Hash Challenge
hash = {
a: 1,
b: 2,
c: {
d: 3,
e: {
f: 4
},
g: 5
}
}
# some function like flatten_hash(hash) should return [:a, :b, :c, :d, :e, :f, :g]
def flatten_hash(hash)
arr = []
hash.each do |k, v|
arr << k
end
arr
end
def flatten_hash(hash)
arr = []
hash.each do |k, v|
if v.is_a?(Hash)
v.each do |k2, v2|
arr << k2
end
end
arr << k
end
arr
end
def flatten_hash(hash)
arr = []
hash.each do |k, v|
if v.is_a?(Hash)
v.each do |k2, v2|
if v2.is_a?(Hash)
v2.each do |k3, v3|
arr << k3
end
end
arr << k2
end
end
arr << k
end
arr
end
def flatten_hash(hash, arr=[])
hash.each do |k, v|
if v.is_a?(Hash)
flatten_hash(v, arr)
end
arr << k
end
arr
end
describe "FlattenHash" do
it "returns an array of keys for a nested hash" do
expected = [:a, :b, :c, :d, :e, :f, :g]
actual = flatten_hash(hash)
expect(actual).to match_array(expected)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment