繰り返さない文字列の順列を生成するRubyメソッドを書いているときに、これにつまずいた:
class String
def permutations
@result_array = []
recurse( "", self.each_char.to_a )
@result_array
end
def recurse( prepend_character, sub_array )
sub_array.each{ |c|
recurse( prepend_character + c, sub_array - [c] )
}
@result_array << prepend_character if sub_array.empty?
end
end
p "abc".permutations # prints: ["abc", "acb", "bac", "bca", "cab", "cba"]
コアクラス内にアトリビュートを作成してデータを保持するのが適切か推奨かを考えていました。これを達成するために属性を作成しないようにするためのアイデアはありますか (グローバル変数を使用せずに)?