Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/useful_class_extensions.rb

Instance Method Summary collapse

Instance Method Details

#all_combinations(length_range = 1..self.length) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/useful_class_extensions.rb', line 59

def all_combinations(length_range=1..self.length)
  permutations = []
  length_range.max.downto(length_range.min) do |length|
    self.permutation(length).each do |perm|
      permutations << perm.sort if !permutations.include?(perm.sort)
    end
  end
  return permutations
end

#areaObject



53
54
55
56
57
# File 'lib/useful_class_extensions.rb', line 53

def area
  side_one = (self[0].to_f-self[2].to_f).abs
  side_two = (self[1].to_f-self[3].to_f).abs
  return side_one*side_two
end

#centroidObject



46
47
48
49
50
51
# File 'lib/useful_class_extensions.rb', line 46

def centroid
  dimensions = self.flatten
  x_cent = (x_vals = 1.upto(dimensions.length).collect{|x| dimensions[x] if x.even?}.compact).sum/x_vals.length
  y_cent = (y_vals = 1.upto(dimensions.length).collect{|y| dimensions[y] if !y.even?}.compact).sum/y_vals.length
  return x_cent, y_cent
end

#chunk(pieces = 2) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/useful_class_extensions.rb', line 23

def chunk(pieces=2)
  len = self.length
  return [] if len == 0
  mid = (len/pieces)
  chunks = []
  start = 0
  1.upto(pieces) do |i|
    last = start+mid
    last = last-1 unless len%pieces >= i
    chunks << self[start..last] || []
    start = last+1
  end
  chunks
end

#frequenciesObject



14
15
16
17
18
19
20
21
# File 'lib/useful_class_extensions.rb', line 14

def frequencies
  new_val = {}
  self.each do |s|
    elem = s.to_s
    new_val[elem].nil? ? new_val[elem]=1 : new_val[elem]+=1
  end
  return new_val
end

#repackObject



38
39
40
41
42
43
44
# File 'lib/useful_class_extensions.rb', line 38

def repack
  set = []
  self.each do |slice|
    set<<slice
    yield set
  end
end

#sthObject



80
81
82
# File 'lib/useful_class_extensions.rb', line 80

def sth
  structs_to_hashes
end

#structs_to_hashesObject



69
70
71
72
73
74
75
76
77
78
# File 'lib/useful_class_extensions.rb', line 69

def structs_to_hashes
  keys = (self.first.methods-Class.methods).collect{|x| x.to_s.gsub("=", "") if x.to_s.include?("=") && x.to_s!= "[]="}.compact
  hashed_set = []
  self.each do |struct|
    object = {}
    keys.collect{|k| object[k] = k.class == DateTime ? struct.send(k).to_time : struct.send(k)}
    hashed_set << object
  end
  return hashed_set
end

#sumObject



2
3
4
# File 'lib/useful_class_extensions.rb', line 2

def sum
  self.compact.inject(0) { |s,v| s += v }
end

#to_fObject



10
11
12
# File 'lib/useful_class_extensions.rb', line 10

def to_f
  self.collect{|x| x.to_i}
end

#to_iObject



6
7
8
# File 'lib/useful_class_extensions.rb', line 6

def to_i
  self.collect{|x| x.to_i}
end