2017-04-05 37 views
0

作爲一個例子,假設我們想看看在將27.5英寸寬的椅子和31.5英寸寬的椅子安裝到105英寸的空間中時,利用率最高的利用率,我希望看到的最高利用率是最高利用率,而不是大小椅子的挑使用模數來確定空間的最佳用法。 Ruby中有更簡單的方法嗎?

我做這樣說:。

[((105 - (105 % 27.5))/105), ((105 - (105 % 31.5))/105)].max 
+3

什麼不順利?它可以用更短的形式表達(並且更易於閱讀),但對我來說這似乎是正確的。我會把它寫成'1 - [105%27.5,105%31.5] .min/105'(獲得最小的未使用空間,分爲105,將其表示爲整體的一小部分,從'1'減去以得到所使用的空間是整個空間的一部分)。 – axiac

+1

謝謝@axiac。對不起,我仍然是一個Ruby新手,所以我認爲有一種特殊的Ruby方式, – massaskillz

回答

0

axiac了上述評論一個合理的答案。如果你想知道如何它可能看起來在慣用的紅寶石,我建議以下雖然只是以下幾種可能性之一:

def best_space_utilization(total_space, widths) 
    utilization = widths.map {|w| total_space - (total_space % w) }.max 
    utilization/total_space.to_f 
end 

p best_space_utilization(105, [27.5, 31.5]) 
# => 0.9 

看到它在repl.it:https://repl.it/Gwe7/2

這可能,當然,減少到一個內膽,具有可讀性的相應的犧牲:ws.map {|w| t - (t % w) }.max/t.to_f

如果你想要一個返回的功能均最佳利用和相應的寬度,你可以做這樣的事情:

def best_space_utilization(total_space, widths) 
    widths.map do |w| 
    utilization_percent = (total_space - (total_space % w))/total_space 
    [ w, utilization_percent ] 
    end.max_by(&:last) 
end 

p best_space_utilization(105, [27.5, 31.5]) 
# => [31.5, 0.9] 

看到它在repl.it:https://repl.it/Gwe7/4

相關問題