近年来,函数式编程Funtional Programming大行其道,成为业界的热门话题。2016年端午节期间,我给中国软件匠艺小组的小伙伴们出了一道题目:用TDD的方式驱动出函数式编程版本的”Prime Factor”,不料各路神仙各显神通,争奇斗艳。
“Prime Factor”题目
这是一道经典的TDD题目:对给定的正整数N,求出其所有质因数,经典算法可以通过TDD驱动出二重循环,如下:
1 | def calc(i): |
下面按照交作业的顺序展示一下大家的作品。然而TDD是一个推导的过程,仅仅看最终结果是不够的,能看到中间的状态就更好了。
Ronald麦大仙的Python版本
1 | def factors_from(i, xs): |
梁辰的Ruby版本
TDD过程存储于http://cyber-dojo.org/kata/edit/9B0ED5F482?avatar=lion
1 | def first_divisible_factor start_factor, number |
武可的Haskell版本
TDD过程存储于http://cyber-dojo.org/kata/edit/2EF003C866?avatar=zebra
1 | factorOf _ 1 = [] |
Jacky申导的Python版本
TDD过程存储于http://cyber-dojo.org/review/show/2BE7D52F15
1 | def f(n, p=2): |