Class: Array
- Inherits:
-
Object
- Object
- Array
- Defined in:
- lib/useful_class_extensions.rb
Instance Method Summary collapse
- #all_combinations(length_range = 1..self.length) ⇒ Object
- #area ⇒ Object
- #centroid ⇒ Object
- #chunk(pieces = 2) ⇒ Object
- #frequencies ⇒ Object
- #repack ⇒ Object
- #sth ⇒ Object
- #structs_to_hashes ⇒ Object
- #sum ⇒ Object
- #to_f ⇒ Object
- #to_i ⇒ Object
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 |
#area ⇒ Object
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 |
#centroid ⇒ Object
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 |
#frequencies ⇒ Object
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 |
#repack ⇒ Object
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 |
#sth ⇒ Object
80 81 82 |
# File 'lib/useful_class_extensions.rb', line 80 def sth structs_to_hashes end |
#structs_to_hashes ⇒ Object
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 |
#sum ⇒ Object
2 3 4 |
# File 'lib/useful_class_extensions.rb', line 2 def sum self.compact.inject(0) { |s,v| s += v } end |
#to_f ⇒ Object
10 11 12 |
# File 'lib/useful_class_extensions.rb', line 10 def to_f self.collect{|x| x.to_i} end |
#to_i ⇒ Object
6 7 8 |
# File 'lib/useful_class_extensions.rb', line 6 def to_i self.collect{|x| x.to_i} end |