Advertisement
Guest User

Untitled

a guest
Jun 27th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. class ConsecutiveNumbers
  2.  
  3. def initialize
  4. @result = []
  5. end
  6.  
  7. def find(input_array)
  8. sa = input_array.sort
  9. current_array = []
  10. @result << current_array
  11.  
  12. sa.each_with_index do |current_number, i|
  13. next_number = sa[i+1]
  14. previous_number = sa[i-1]
  15.  
  16. if(current_number != sa.last)
  17. if(consecutive?(current_number, next_number))
  18. current_array << current_number
  19. elsif(consecutive?(previous_number, current_number))
  20. current_array << current_number
  21. current_array = []
  22. @result << current_array
  23. end
  24. end
  25. end
  26.  
  27. @result.inject([]) do |longest, array|
  28. longest.length > array.length ? longest : array
  29. end
  30. end
  31.  
  32. def consecutive?(x,y)
  33. y-x == 1
  34. end
  35. end
  36.  
  37. input = [8,301,302,90,32,300,11, 28,80,9,10]
  38. longest_sequence = ConsecutiveNumbers.new.find(input)
  39.  
  40. puts "input #{input.inspect}"
  41. puts "longest sequence #{longest_sequence}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement