体验ruby的魔幻语法

题目是找零钱,假设我们需要找给别人39美元元的零钱,
那么结果将会是(美元的硬币有25,10,5,1这种):

用Ruby来解决,只需要两行即可,

1def make_change(amount, coins = [])
2  coins.sort! { |x,y| y <=> x  }
3
4  return coins.map!{|coin| f = amount/coin; amount %= coin;Array.new(f){coin} }.flatten
5end
6
7p make_change(39,[10,1,5,25])

 

这里采用贪心算法,每次总是用最大的硬币去整除,然后将余下的钱用下一个硬币进行同样运算。

一句话包含了ruby许多很有特点的语法,是我见到过最灵活敏捷的语言。

posted @ 2008-11-13 17:01 ithurricane 阅读(134) 评论(0) 编辑 收藏