Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ConsecutiveNumbers
- def initialize
- @result = []
- end
- def find(input_array)
- sa = input_array.sort
- current_array = []
- @result << current_array
- sa.each_with_index do |current_number, i|
- next_number = sa[i+1]
- previous_number = sa[i-1]
- if(current_number != sa.last)
- if(consecutive?(current_number, next_number))
- current_array << current_number
- elsif(consecutive?(previous_number, current_number))
- current_array << current_number
- current_array = []
- @result << current_array
- end
- end
- end
- @result.inject([]) do |longest, array|
- longest.length > array.length ? longest : array
- end
- end
- def consecutive?(x,y)
- y-x == 1
- end
- end
- input = [8,301,302,90,32,300,11, 28,80,9,10]
- longest_sequence = ConsecutiveNumbers.new.find(input)
- puts "input #{input.inspect}"
- puts "longest sequence #{longest_sequence}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement