Sha256: c71014f619bd55c04a2278f1b8fe47f72593423780b38b21d61f3dc0314ab1bc
Contents?: true
Size: 776 Bytes
Versions: 26
Compression:
Stored size: 776 Bytes
Contents
unless Array.method_defined? :repeated_permutation require 'backports/tools' require 'backports/1.8.7/array/index' class Array # Note: Permutations are not yielded in the same order as MRI. # This is not a bug; the spec states that the order is implementation dependent!!! def repeated_permutation(num) return to_enum(:repeated_permutation, num) unless block_given? num = Backports.coerce_to_int(num) if num <= 0 yield [] if num == 0 else copy = dup indices = Array.new(num, 0) indices[-1] = size while dec = indices.index{|x| x != 0} indices.fill size-1, 0, dec indices[dec] -= 1 yield copy.values_at(*indices) end end self end end end
Version data entries
26 entries across 26 versions & 2 rubygems