Sha256: 9cd17ec83a47088254cec27f26743605f1e1b08a993cb0ad0f5e5e5cfbf3f0b1
Contents?: true
Size: 885 Bytes
Versions: 1
Compression:
Stored size: 885 Bytes
Contents
require 'ludy/version' class Array if Ludy.ruby_before '1.9.0' require 'ludy/array/foldr' require 'ludy/symbol/to_proc' if Ludy.ruby_before '1.9.0' # for each combos # [[0,1],[2,3]].combos # => [[0,2],[0,3],[1,2],[1,3]] def combos result = [] radixs = reverse.map(&:size) inject(1){|r, i| r * i.size}.times{ |step| result << foldr(lambda{ |i, r| radix = radixs[r.size] r.unshift i[step % radix] step /= radix unless radix.nil? r }, []) } result end else require 'ludy/array/tail' # for each combos # [[0,1],[2,3]].combos # => [[0,2],[0,3],[1,2],[1,3]] # simply: # array.first.product *array.tail def combos first.product(*tail) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ludy-0.1.15 | lib/ludy/array/combos.rb |