覚えておくと便利な Array のメソッド (追加)
前回「覚えておくと便利な Array のメソッド」のつづき。
Array#permutation
- サイズ n の順列を生成。
(1..8).to_a.permutation(2).to_a # => [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], # => [2, 1], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], # => [3, 1], [3, 2], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], # => [4, 1], [4, 2], [4, 3], [4, 5], [4, 6], [4, 7], [4, 8], # => [5, 1], [5, 2], [5, 3], [5, 4], [5, 6], [5, 7], [5, 8], # => [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 7], [6, 8], # => [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 8], # => [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7]]
連勝単式の全ての組み合わせ。
三連勝単式なら permutation(3)
Array#product
前回も書いたけど、
- 複数の Array の組み合わせ。
# open(path [, mode [, perm]] [, &block]) perm = [nil, :perm] # perm は省略可 options = [nil] + # mode は省略可 [:mode].product(perm) # mode を指定すると perm も指定可 block = [nil, :"&block"] # block は省略可 # File.open は path に省略可能な mode, perm とブロックを付けて呼び出す [:path].product(options).product(block). each{|p|puts "open(#{p.flatten.compact.join(', ')})"} # >> open(path) # >> open(path, &block) # >> open(path, mode) # >> open(path, mode, &block) # >> open(path, mode, perm) # >> open(path, mode, perm, &block)
File.open の使い方、全パターン。