順列を生成するためのこの関数の慣用的なバージョンは、Rubyでどのように見えるのだろうかと思います。同じ結果が得られることは理解してい[1,2,3].permutation.to_a
ますが、Rubyの学習と、Rubyでこのような再帰的な問題に取り組む方法に興味があります。
def permutations(seq)
if seq.empty? || seq.count == 1
seq
else
seq.map { |x|
permutations(seq.select { |e| e != x }).map { |p|
if p.class == Fixnum
[x, p]
else
p.unshift(x)
end
}
}.flatten(1)
end
end
ありがとう!