2009-12-12

countdown problem

"Programming in Haskell" 的第十一章讲的是countdown problem,就是说给定一系列操作,比如加减乘除,和一系列自然数,比如2,5,9,17,求出可能的组合方法使得表达式的结果为给定数值,比如24。在这个简单的例子中,我们找到两种解法:

  1. (5-2)*(17-9)

  2. (5+9)/2+17


大家都知道,这就是在文曲星中常见的24点游戏。用Haskell写一道程序做这个工作只需近一百行代码。有兴趣的话,则可以去Channel9看视频,这一课的讲授者是Graham Hutton博士,也就是"Programming in Haskell"的作者。从问题的表述到求解,看着很清晰自然。(我后来花了点时间想自己写,一时之间却也写不出来,知易行难!)

最有趣的还是优化工作,给定六个数的时侯回比较慢一点。但Dr. Graham介绍了一些技巧使得原本需要45秒的计算最终降为1秒以内。Awesome!

标签:

0 Comments:

发表评论

<< Home