看板 Ruby 關於我們 聯絡資訊
※ 引述《yzugsr (Bird)》之銘言: : require 'rational' # Integer#gcd need this in ruby 1.8.7 : puts ARGV.map(&:to_i).inject(&:gcd) : 推 SansWord:為什麼是functional programming style? 願聞其詳。 04/25 09:04 我覺得用上map, inject(fold)這些higher order function 而不用迴圈及變數去記住運算的狀態 是比較接近FP的寫法.... 當然這只是FP的一角而已,或許不能稱為FP style 對於「將程式參數(argv)中的數字全部進行gcd運算」 參考一下Scala及Haskell可能的實作,結構跟上面的Ruby code會很相似 In Scala: (stdlib沒有gcd,自幹一下) object Main { def main(args: Array[String]) { def gcd(a: Int, b: Int): Int = if (b==0) a else gcd(b, a%b) println(args.map(_.toInt).reduceLeft(gcd)) } } In Haskell: import System.Environment main = do argv <- getArgs print $ foldl1 gcd $ map (read::String->Int) argv 啊....用Ruby寫最短....冏.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.180.162
godfat:要比 ruby 短是很有難度的 XDD 04/27 21:22