Unverified Commit 55ef4e4b authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto Committed by GitHub

Merge pull request #4677 from...

Merge pull request #4677 from shuujii/array-permutation-combination-without-block-should-return-self

`Array#(permutation|combination)` without block should return `self`
parents 0ce1878a 28d1f6cd
......@@ -815,12 +815,11 @@ class Array
# a.permutation(0).to_a #=> [[]] # one permutation of length 0
# a.permutation(4).to_a #=> [] # no permutations of length 4
def permutation(n=self.size, &block)
size = self.size
return to_enum(:permutation, n) unless block
return if n > size
size = self.size
if n == 0
yield []
else
yield []
elsif n <= size
i = 0
while i<size
result = [self[i]]
......@@ -835,6 +834,7 @@ class Array
i += 1
end
end
self
end
##
......@@ -861,9 +861,8 @@ class Array
# a.combination(5).to_a #=> [] # no combinations of length 5
def combination(n, &block)
size = self.size
return to_enum(:combination, n) unless block
return if n > size
size = self.size
if n == 0
yield []
elsif n == 1
......@@ -872,7 +871,7 @@ class Array
yield [self[i]]
i += 1
end
else
elsif n <= size
i = 0
while i<size
result = [self[i]]
......@@ -882,6 +881,7 @@ class Array
i += 1
end
end
self
end
##
......
......@@ -3,8 +3,11 @@
def assert_permutation_combination(exp, receiver, meth, *args)
act = []
receiver.__send__(meth, *args) { |v| act << v }
assert_equal(exp, act.sort)
ret = receiver.__send__(meth, *args) { |v| act << v }
assert "assert_#{meth}" do
assert_equal(exp, act.sort)
assert_same(receiver, ret)
end
end
def assert_permutation(exp, receiver, *args)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment