* array.c (rb_ary_combination): revisit #combination behavior.
suggested by David Flanagan. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5838fff334
commit
25ff7ef4c6
@ -1,3 +1,8 @@
|
|||||||
|
Mon Oct 1 23:44:23 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* array.c (rb_ary_combination): revisit #combination behavior.
|
||||||
|
suggested by David Flanagan.
|
||||||
|
|
||||||
Mon Oct 1 16:17:44 2007 Tanaka Akira <akr@fsij.org>
|
Mon Oct 1 16:17:44 2007 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* bootstraptest/test_method.rb: use assert_normal_exit to test
|
* bootstraptest/test_method.rb: use assert_normal_exit to test
|
||||||
|
6
array.c
6
array.c
@ -3028,14 +3028,12 @@ rb_ary_combination(VALUE ary, VALUE num)
|
|||||||
RETURN_ENUMERATOR(ary, 1, &num);
|
RETURN_ENUMERATOR(ary, 1, &num);
|
||||||
n = NUM2LONG(num);
|
n = NUM2LONG(num);
|
||||||
len = RARRAY_LEN(ary);
|
len = RARRAY_LEN(ary);
|
||||||
if (n < 1 || len < n) {
|
if (len < n) {
|
||||||
/* yield nothing */
|
/* yield nothing */
|
||||||
}
|
}
|
||||||
else if (n == 0) {
|
else if (n <= 0) {
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
rb_yield(rb_ary_new2(0));
|
rb_yield(rb_ary_new2(0));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if (n == 1) {
|
else if (n == 1) {
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
rb_yield(rb_ary_new3(1, RARRAY_PTR(ary)[i]));
|
rb_yield(rb_ary_new3(1, RARRAY_PTR(ary)[i]));
|
||||||
|
@ -1178,7 +1178,7 @@ class TestArray < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
# def test_permutation
|
# def test_permutation
|
||||||
# assert_equal(@cls[], @cls[1,2,3].permutation(0).to_a)
|
# assert_equal(@cls[[]], @cls[1,2,3].permutation(0).to_a)
|
||||||
# assert_equal(@cls[[1],[2],[3]], @cls[1,2,3].permutation(1).to_a)
|
# assert_equal(@cls[[1],[2],[3]], @cls[1,2,3].permutation(1).to_a)
|
||||||
# assert_equal(@cls[[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]], @cls[1,2,3].permutation(2).to_a)
|
# assert_equal(@cls[[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]], @cls[1,2,3].permutation(2).to_a)
|
||||||
# assert_equal(@cls[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]], @cls[1,2,3].permutation(3).to_a)
|
# assert_equal(@cls[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]], @cls[1,2,3].permutation(3).to_a)
|
||||||
@ -1186,7 +1186,7 @@ class TestArray < Test::Unit::TestCase
|
|||||||
# end
|
# end
|
||||||
|
|
||||||
def test_combination
|
def test_combination
|
||||||
assert_equal(@cls[], @cls[1,2,3,4].combination(0).to_a)
|
assert_equal(@cls[[]], @cls[1,2,3,4].combination(0).to_a)
|
||||||
assert_equal(@cls[[1],[2],[3],[4]], @cls[1,2,3,4].combination(1).to_a)
|
assert_equal(@cls[[1],[2],[3],[4]], @cls[1,2,3,4].combination(1).to_a)
|
||||||
assert_equal(@cls[[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]], @cls[1,2,3,4].combination(2).to_a)
|
assert_equal(@cls[[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]], @cls[1,2,3,4].combination(2).to_a)
|
||||||
assert_equal(@cls[[1,2,3],[1,2,4],[1,3,4],[2,3,4]], @cls[1,2,3,4].combination(3).to_a)
|
assert_equal(@cls[[1,2,3],[1,2,4],[1,3,4],[2,3,4]], @cls[1,2,3,4].combination(3).to_a)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user