class Susanin::Pattern

Public Class Methods

new(arr) click to toggle source
# File lib/susanin/pattern.rb, line 8
def initialize(arr)
  @arr = Array.wrap(arr)
end

Public Instance Methods

arr_size() click to toggle source
# File lib/susanin/pattern.rb, line 19
def arr_size
  @arr.size
end
each(&block) click to toggle source
# File lib/susanin/pattern.rb, line 12
def each(&block)
  shifts.map do |s|
    a = @arr.slice(*s)
    block.call(a.size == 1 ? a[0] : a)
  end
end
inspect() click to toggle source
# File lib/susanin/pattern.rb, line 31
def inspect
  map{|i|i}
end
shifts() click to toggle source
# File lib/susanin/pattern.rb, line 23
def shifts
  arr_size.downto(1).flat_map do |shift|
    (0).upto(arr_size-shift).map do |i|
      [0+i, shift]
    end
  end
end