Skip to content

Instantly share code, notes, and snippets.

@EvilScott
Created February 6, 2012 23:04
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save EvilScott/1755729 to your computer and use it in GitHub Desktop.
Save EvilScott/1755729 to your computer and use it in GitHub Desktop.
Retrieve diagonals from array of arrays in Ruby
class Array
def diagonals
[self, self.map(&:reverse)].inject([]) do |all_diags, matrix|
((-matrix.count + 1)..matrix.first.count).each do |offet_index|
diagonal = []
(matrix.count).times do |row_index|
col_index = offet_index + row_index
diagonal << matrix[row_index][col_index] if col_index >= 0
end
all_diags << diagonal.compact if diagonal.compact.count > 1
end
all_diags
end
end
end
@EvilScott
Copy link
Author

Hey I must have missed this comment when you made it a few months ago. I know its a bit late, but did you ever get to understanding the flow?

@YevKo
Copy link

YevKo commented Dec 4, 2014

yeap, it is really hard to understand. comments in the code would help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment