KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've got two long streams of numbers coming from two different sources (binary data) in Ruby (1.9.2). The two sources are encapsulated in the form of two Enumerators . I want to check that the two streams are exactly equal. I've come with a couple solutions, but both seem quite inelegant. The first one simply transforms both into an array: def equal_streams?(s1, s2) s1.to_a == s2.to_a end This works, but it is not very performant, memory-wise, specially if the streams have lots of information. The other option is... ugh. def equal_streams?(s1, s2) s1.each do |e1| begin e2 = s2.next return false unless e1 == e2 # Different element found rescue StopIteration return false # s2 has run out of items before s1 end end begin s2.next rescue StopIteration # s1 and s2 have run out of elements at the same time; they are equal return true end return false end So, is there a simpler, more elegant way of doing this?
Tags (comma-separated)
Save Edits
Cancel