class Array

Public Instance Methods

mean() click to toggle source
# File lib/rubyhacks.rb, line 500
def mean
        return sum/size.to_f
end
nuniq() click to toggle source
# File lib/rubyhacks.rb, line 508
        def nuniq
                arr = dup
                i=0; 
                while i < arr.size
                        j=i+1
                        while j < arr.size 
#                               p arr[i], arr[j]
                                arr.delete_at(j) if (arr[j].to_f <=> arr[i].to_f) == 0
                                j+=1
                        end
                        i+=1
                end
                arr
        end
pieces(no_pieces) click to toggle source
# File lib/rubyhacks.rb, line 477
        def pieces(no_pieces)
                ans = []
                piece_sizes  = []

                for i in 0...no_pieces 
                        ans.push []; piece_sizes[i] = 0
                end
                for j in 0...size 
                        piece_sizes[j % no_pieces] += 1
                end
#               p ans, piece_sizes
                accum = 0
                piece_sizes.each_with_index do |piece_size, piece|
                        ans[piece] = self.slice(accum...accum + piece_size)
                        accum += piece_size
                end
                return ans
        end
product() click to toggle source
# File lib/rubyhacks.rb, line 504
def product
        return inject{|old, new| old * new}
end
random() click to toggle source
# File lib/rubyhacks.rb, line 460
def random
        self[rand(size)]
end
slice_with_stride(stride, offset, slice_size = 1) click to toggle source
# File lib/rubyhacks.rb, line 464
def slice_with_stride(stride, offset, slice_size = 1)
        raise ArgumentError.new("slice_size cannot be bigger than stride - offset") if slice_size > stride - offset
        i = 0; new_arr = []
        loop do
                for j in 0...slice_size
                        new_arr.push self[i + offset + j]
                end
                i += stride
                break if i >= size
        end
        return new_arr
end
sum() click to toggle source
# File lib/rubyhacks.rb, line 496
def sum 
        return inject{|old, new| old + new}
end