Challenge: returning to iterating! Last time, I wanted the sub-iteration to skip records already looked at, as well as skip the index forward. Let’s gooo!
i = 0
patients.each_with_index do |row, index|
next if i > index # will skip through rows already processed in the while loop
# using while equal makes it a little easier to understand than part 1’s solution
while patients[i][:id] == patients[index][:id]
# i will increase, and as long as it keeps matching our entry index :id; we are within the same patient’s records
# do logic
i += 1
break if !patients[i] # no more records
Takeaway: I previously implemented part 1’s solution, and this solution in production code. I wonder if there is a scenario where part 1 would be optimal comparatively (I think no because rows are redundantly processed).