我有以下代碼來列出給定字符串的所有可能的排列。但由於我的拙劣列表(ruby數組)操作和功能編程方面的知識有限,我不得不使用flatten來獲得結果數組。這幾乎是一個黑客。我如何重構代碼並避免使用(濫用)變平?如何微調地圖功能,避免使用拼合
class String
def remove_char_at(i)
if i==0
self[1..-1]
else
self[0..i-1] + self[i+1..-1]
end
end
end
def permute(str,prefix="")
if str.size==0
prefix
else
str.chars.each_with_index.map do |s,i|
permute(str.remove_char_at(i),prefix+s)
end.flatten
end
end
in'block in permute2':無法將String轉換爲Array(TypeError) – lkahtz 2012-08-06 21:44:47
我將返回值調整爲數組。現在它正在工作。 – lkahtz 2012-08-06 21:56:30
雖然我有點找到我的原始版本沒有累加器更容易理解... – lkahtz 2012-08-06 21:57:06