DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
Matrix Rotator
This method rotates a matrix
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





