Re: [心得] 最大公約數

看板Ruby作者 (Bird)時間13年前 (2011/04/26 00:39), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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

04/27 21:22, , 1F
要比 ruby 短是很有難度的 XDD
04/27 21:22, 1F
文章代碼(AID): #1DjQEkKb (Ruby)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1DjQEkKb (Ruby)