1
我只是做了下面的代碼。我在語法和模式中看到很多重複(比如一次又一次使用臨時變量r,並且在不爲零時追加字符串)。我怎樣才能讓這更幹?我在C背景,只是想學習Ruby的方式來抽象和簡化,以獲得優雅的代碼...如何讓這個紅寶石代碼更幹DRY
# Traverse a matrix spirally
def subm(m)
result=[]
if m.length>1
m[1..-2].each {|a| result << a[1..-2]}
end
result
end
def trav_sp(m)
result=[]
if not m.empty?
result += m[0] if m[0]
r=[]
m[1..-1].each {|a| r << a[-1]} if m[1..-1]
result += r
r=[]
if m[-1]
m[-1].each_with_index{|a,i| (r<< m[-1][-2-i] if m[-1][-2-i])}
result += r
end
r=[]
m.each_with_index {|a,i| (r<< m[0][-2-i] if m[0][-2-i])}
result += r
return result = result + trav_sp(subm(m))
else
return result
end
end