6 kyu

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 return nil.

  • 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 a TypeError

  • 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]]
Arrays
Fundamentals

Stats:

CreatedMay 14, 2016
PublishedMay 14, 2016
Warriors Trained175
Total Skips22
Total Code Submissions488
Total Times Completed47
Ruby Completions47
Total Stars3
% of votes with a positive feedback rating69% of 27
Total "Very Satisfied" Votes15
Total "Somewhat Satisfied" Votes7
Total "Not Satisfied" Votes5
Total Rank Assessments3
Average Assessed Rank
6 kyu
Highest Assessed Rank
6 kyu
Lowest Assessed Rank
6 kyu
Ad
Contributors
  • MrPlazmaDude Avatar
  • smile67 Avatar
  • user9644768 Avatar
Ad