Class: Array

Inherits:
Object show all
Defined in:
lib/monkey_patching.rb

Overview

Adding some functionality (permutations) and syntactic sugar to array

Instance Method Summary collapse

Instance Method Details

#/(l) ⇒ Object



83
84
85
86
87
88
89
90
91
92
# File 'lib/monkey_patching.rb', line 83

def /(l)
  res = []
  
  each_with_index do |x,i|
    res << [] if i % l == 0
    res.last << x
  end

  res
end

#add?(x) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
54
# File 'lib/monkey_patching.rb', line 46

def add?(x)
  if x
    unless include? x
      push(x).sort
    end
  end

  self
end

#each_char(&block) ⇒ Object



94
95
96
# File 'lib/monkey_patching.rb', line 94

def each_char(&block)
  each &block
end

#permutationsObject



76
77
78
79
80
81
# File 'lib/monkey_patching.rb', line 76

def permutations
  return [self] if size < 2
  perm = []
  each { |e| (self - [e]).permutations.each { |p| perm << ([e] + p) } }
  perm
end

#powersetObject



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/monkey_patching.rb', line 56

def powerset
  ret = self.inject([[]]) do |acc, x|
    res = []
    acc.each { |s| res << s; res << ([x]+s).sort }
    res
  end

  ret.sort do |s1,s2|
    if s1.size == s2.size
      s1 <=> s2
    else
      s1.size <=> s2.size
    end
  end
end

#proper_subsetsObject



72
73
74
# File 'lib/monkey_patching.rb', line 72

def proper_subsets
  powerset.select { |s| s.size > 0 and s.size < size }
end

#triplesObject



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

def triples
  res = []
  tuples.each { |a,b| self.each { |c| res << [a,b,c] } }

  res
end

#tuplesObject



32
33
34
35
36
37
# File 'lib/monkey_patching.rb', line 32

def tuples
  res = []
  self.each { |a| self.each { |b| res << [a,b] } }

  res
end