Guest User

Untitled

a guest
Jul 19th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require 'pp'
  3.  
  4. a = ['one',['two','three'],[['four','five','six']], [[['seven','eight','nine','ten']]]]
  5.  
  6. class Array
  7. alias_method :old_flatten, :flatten
  8. def flatten(depth=nil)
  9. if depth.nil?
  10. ret = old_flatten
  11. else
  12. if depth == 0
  13. ret = self
  14. else
  15. depth -= 1
  16. ret = []
  17. each do |x|
  18. if x.kind_of? Array
  19. ret += x.flatten(depth)
  20. else
  21. ret << x
  22. end
  23. end
  24. end
  25. end
  26. ret
  27. end
  28. end
  29.  
  30. puts "flatten it one level"
  31. pp a.flatten(1)
  32.  
  33. puts "flatten it to two"
  34. pp a.flatten(2)
  35.  
  36. puts "flatten it to 100"
  37. pp a.flatten(100)
Add Comment
Please, Sign In to add comment