当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Array.permutation用法及代码示例


本文简要介绍ruby语言中 Array.permutation 的用法。

用法

permutation {|element| ... } → self
permutation(n) {|element| ... } → self
permutation → new_enumerator
permutation(n) → new_enumerator

当使用块调用时,产生 self 元素的所有排列;返回 self 。排列的顺序是不确定的。

当给出一个块和一个 in-range 正整数参数 n ( 0 < n <= self.size ) 时,调用具有所有 n -tuple 排列的 self 的块。

例子:

a = [0, 1, 2]
a.permutation(2) {|permutation| p permutation }

输出:

[0, 1]
[0, 2]
[1, 0]
[1, 2]
[2, 0]
[2, 1]

另一个例子:

a = [0, 1, 2]
a.permutation(3) {|permutation| p permutation }

输出:

[0, 1, 2]
[0, 2, 1]
[1, 0, 2]
[1, 2, 0]
[2, 0, 1]
[2, 1, 0]

n 为零时,使用新的空数组调用块一次:

a = [0, 1, 2]
a.permutation(0) {|permutation| p permutation }

输出:

[]

n 超出范围(负数或大于 self.size )时,不调用该块:

a = [0, 1, 2]
a.permutation(-1) {|permutation| fail 'Cannot happen' }
a.permutation(4) {|permutation| fail 'Cannot happen' }

当给出一个块但没有参数时,行为与 a.permutation(a.size) 相同:

a = [0, 1, 2]
a.permutation {|permutation| p permutation }

输出:

[0, 1, 2]
[0, 2, 1]
[1, 0, 2]
[1, 2, 0]
[2, 0, 1]
[2, 1, 0]

如果没有给出块,则返回一个新的枚举器:

a = [0, 1, 2]
a.permutation # => #<Enumerator: [0, 1, 2]:permutation>
a.permutation(2) # => #<Enumerator: [0, 1, 2]:permutation(2)>

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Array.permutation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。