Matrix rotator
Example output:
~/Desktop% ruby rotate.rb
normal
12345
00000
fooba
rotated left
50a
40b
30o
20o
10f
rotated right
f01
o02
o03
b04
a05
def rotateMatrix(matrix, direction) # - You must Rotate the matrix neo! oldMap = matrix # Get the number of lines in the old map (they're the new columns) lineCount = oldMap.size # Get the number of columns in the old map (We have that many rows now) columnCount = oldMap[0].size @map = [] columnCount.times { @map.push [] } # Loop through every line in the old map, retrieve the appropriate column # and make a horizontal column with it's contents # we'll take one (old)line at a time and rotate it. onLine = 0 oldMap.each do |oldLine| onColumn = 0 oldLine.each do case direction when :right @map[(columnCount - 1) - onColumn][(lineCount - 1) - onLine] = oldLine[(columnCount - 1) - onColumn] when :left @map[onColumn][onLine] = oldLine[(columnCount - 1) - onColumn] end onColumn += 1 end onLine += 1 end @map end def rotateRight(matrix) rotateMatrix(matrix, :right) end def rotateLeft(matrix) rotateMatrix(matrix, :left) end