Duplicate Array#transpose functionality
Description:
In this Kata, the goal is to duplicate the functionality of the array transpose method.
Transpose is an array method which takes an existing 2-dimensional array (i.e. a matrix) and flips it on its side.
It looks like this:
arr = [['a', 'b', 'c'],['d', 'e', 'f']]
arr.transpose
=> [['a', 'd'], ['b', 'e'], ['c', 'f']]
For your solution:
Don't use
Array#transpose
Don't use
Array#zip
A
nil
array argument should returnnil
.An empty array argument should return an empty array.
A non-array argument should return ArgumentError
Any
nil
or non-array types in the subarrays should return aTypeError
A single demensional array should return a TypeError.
If the length of all the subarrays don't match, raise an
IndexError
.Correctly transpose all multi demensional arrays.
Examples:
A nil array argument should return nil.
my_transpose(nil)
=> nil
An empty array argument should return an empty array.
my_transpose([])
=> []
A non array argument should return ArgumentError
my_transpose(1)
=> ArgumentError: Uh Oh!
Any nil or non-array types in the subarrays should return a TypeError
new_arr = my_transpose([['a', 'b', 'c'],['d', 'e'], nil])
=> TypeError: Uh Oh!
A single demensional array should return a TypeError.
my_transpose([a])
=> TypeError: Uh Oh!
If the length of all the subarrays don't match, raise an IndexError.
new_arr = my_transpose([['a', 'b', 'c'],['d', 'e']])
=> IndexError: Uh Oh!
Valid transpose examples
my_transpose([['a', 'b', 'c'],['d', 'e', 'f']])
=> [["a", "d"], ["b", "e"], ["c", "f"]]
my_transpose([[a]])
=> [[a]]
Similar Kata:
Stats:
Created | May 14, 2016 |
Published | May 14, 2016 |
Warriors Trained | 175 |
Total Skips | 22 |
Total Code Submissions | 488 |
Total Times Completed | 47 |
Ruby Completions | 47 |
Total Stars | 3 |
% of votes with a positive feedback rating | 69% of 27 |
Total "Very Satisfied" Votes | 15 |
Total "Somewhat Satisfied" Votes | 7 |
Total "Not Satisfied" Votes | 5 |
Total Rank Assessments | 3 |
Average Assessed Rank | 6 kyu |
Highest Assessed Rank | 6 kyu |
Lowest Assessed Rank | 6 kyu |