Sha256: 83cba338aff412556faed061890c719d8a130cd3112fb1cae56c344112cdc199

Contents?: true

Size: 935 Bytes

Versions: 4

Compression:

Stored size: 935 Bytes

Contents

require 'darkext/numeric'
require 'darkext/symbol'

class Array
  # Rotates the array left by n elements
  def rotate(n = 1)
    return if self.size.zero?
    n.times { self.push(self.shift) }
  end

  # Rotates the array right by n elements
  def rotate_reverse(n = 1)
    return if self.size.zero?
    n.times { self.unshift(self.pop) }
  end

  # Sums the array
  def sum
    self.inject(:+)
  end

  # Finds the product of the array
  def product
    self.inject(:*)
  end

  # Collects the squares of each value in the array
  def squares
    self.map(&:square)
  end

  # Destructively collects the squares
  def squares!
    self.map!(&:square)
  end

  # Finds the sum of squares of the array
  def sum_of_squares
    self.squares.sum
  end

  # Picks a random value from the array
  def random
    self[rand(self.size)]
  end
  alias :pick :random

  # Randomizes the array
  def randomize
    self.sort_by { rand }
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
darkhelmet-darkext-0.0.3 lib/darkext/array.rb
darkhelmet-darkext-0.1.0 lib/darkext/array.rb
darkhelmet-darkext-0.2.0 lib/darkext/array.rb
darkhelmet-darkext-0.3.0 lib/darkext/array.rb