Sha256: c506cd13c1857d77b2c24aa18e2dfc74b6e083adb304b8e712b7512914c7d2a7
Contents?: true
Size: 567 Bytes
Versions: 9
Compression:
Stored size: 567 Bytes
Contents
require 'ludy/array/reverse_map' require 'ludy/symbol/to_proc' require 'ludy/array/foldr' class Array # 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 end
Version data entries
9 entries across 9 versions & 1 rubygems