class Array

Public Instance Methods

dimension() click to toggle source
# File lib/array.rb, line 2
def dimension
        a = self
        return 0 if a.class != Array
        result = 1
        a.each do |sub_a|
                if sub_a.class == Array
                        dim = sub_a.dimension
                        result = dim + 1 if dim + 1 > result
                end
        end
        return result
end
inject_dim(int) click to toggle source
# File lib/array.rb, line 25
def inject_dim(int)
        arr = self
        int.times do
                arr << []
        end
        arr
end
insert_at(position_arr, value) click to toggle source
# File lib/array.rb, line 50
def insert_at(position_arr, value)
        arr = self
        if position_arr.size == 1
                arr[position_arr[0]] = value
                return(arr)
        else
                arr[position_arr[0]].insert_at(position_arr[1..-1], value)
        end
end
matrix(int_arr, current_arr=[]) click to toggle source
# File lib/array.rb, line 33
def matrix(int_arr, current_arr=[])            
        int = int_arr[0]
        new_int_arr = int_arr[1..-1]
        if int_arr.empty?
                return(current_arr)
        else
                if current_arr.empty?
                        new_arr = current_arr.inject_dim(int)
                        self.matrix(new_int_arr, new_arr)
                else
                        current_arr.each do |arr|
                                arr.matrix(int_arr, arr)
                        end
                end
        end
end
values_at_a(indices, current_array=self) click to toggle source
# File lib/array.rb, line 15
def values_at_a(indices, current_array=self)
        #in: self = [3,4,[6,5,[3,4]],3], indices = [2,2,0]
        #out: 3
        if indices.size == 1
                return(current_array[indices[0]])
        else
                values_at_a(indices[1..-1], current_array[indices[0]])
        end
end