「ひとかじりのりんご」

へっぽこエンジニアの備忘録。こちらは旧ブログ。新しい方はこちら→「http://sbkro.github.io」

Rubyで配列の組み合わせを出してみた。

メモ書き。組み合わせを列挙する必要があったので、少しばかり頭をヒネってみた。

スクリプト

def combi (array, buffer, n)
    array.each { |val|
        buffer.push(val)
        if n == 1 then
            p buffer
        else
            combi (array, buffer, n-1)
        end
        buffer.pop
    }
end

combi([1, 2, 3], [], 3)

パラメータ

array 組み合わせを行う配列
buffer バッファ(空配列)
n 組み合わせを行う数

実行結果

> ruby combi.rb
[1, 1, 1]
[1, 1, 2]
[1, 1, 3]
[1, 2, 1]
...
[3, 2, 3]
[3, 3, 1]
[3, 3, 2]
[3, 3, 3]   


変数bufferがあるのは、あんまり綺麗じゃないなぁ。
もっといい書き方があったら教えて下さいヽ(´ー`)ノ