Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

DZone's Guide to

# Matrix Rotator

·
Free Resource

Comment (0)

Save
{{ articles[0].views | formatCount}} Views
```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
``````
Topics:

Comment (0)

Save
{{ articles[0].views | formatCount}} Views

Opinions expressed by DZone contributors are their own.