module Enumerable

def bool_array_combs

Returns:
  • (Array) -
def bool_array_combs
  bool_combs([], method(:bool_array_combs_new_comb))
end

def bool_array_combs_new_comb(value, combs)

def bool_array_combs_new_comb(value, combs)
  combs + combs.map { |c| c + [value] }
end

def bool_combs(empty_value, new_comb_method)

def bool_combs(empty_value, new_comb_method)
  head = [empty_value]
  r = inject(head) do |a, value|
    new_comb_method.call(value, a)
  end
  r == head ? [] : r
end

def bool_hash_combs

Returns:
  • (Hash) -
def bool_hash_combs
  bool_combs({}, method(:bool_hash_combs_new_comb))
end

def bool_hash_combs_new_comb(value, combs)

def bool_hash_combs_new_comb(value, combs)
  combs.flat_map do |comb|
    [false, true].map { |bool_value| comb.dup.merge(value => bool_value) }
  end
end