Rubyについて Part 5

このエントリーをはてなブックマークに追加
Arrayで、全部の順列を列挙するにはどうしたらいいでしょうか
こんな感じです

[1, 2, 3, 4].each_perm do |a|
 # a は並べ替えられた配列
end
「しる!」ってどういう(ry
2典(ry
「(ry」ってどういう意味?
>>565
class Array
def each_permutation(&block)
_permutate(self, 0, &block)
end

private
def _permutate(a, k, &block)
n = a.size-1
if n == k
yield(a)
else
(k..n).each do |i|
b = a.dup ; b[k],b[i] = b[i],b[k] ; _permutate(b, k+1, &block)
end
end
end
end