之前看到了madcocomo分享的24点的kata, 就一直想自己实现一个, 上一次实现它还是上大学的时候了: )
其实这个小算法我已经做了好几遍, 第一次用TDD, 但是就像Joseph说的, 因为算法比重比较大, 一开始没什么思路, 开始了一点点就几乎推进不下去了.
后来就抛弃了TDD, 用传统的思路超级暴力搜索搞定了, 但是感觉很不满意....
最近有空的时候一直在想这个算法, 总算有了点思路,所以又用TDD做了一遍, 感至少比前面那个好一点.
算法的思路和简单,4个数全排列, 取前2个,算好放回去剩3个, 再全排列,再取2个算好放回去....递归的做直到只剩一个,我用了一个语法树保存计算过程,在递归最底层规约语法树得到值与24比较,成功就打印语法树. 需要改进的地方: 更好的显示,能够智能的加括号, 更多地剪枝提高搜索效率, 用自己实现的全排列而不是lib里的(当练习)
TDD的过程中有些地方感觉还是步子迈的大了, 挂了一片,差点hold不住了, 后面再来的时候会再小心一点
下面可能会再把madcocomo的kata看一遍, 之前没看是想先按自己的思路来,还要看看网上其他人的算法思路, 争取再搞一个不一样的(比如用递推不用递归).
大家有什么想法, 欢迎拍砖!!
第一次在cyber-dojo上写代码, 缺了语法高亮感觉都不会写代码了:)
http://cyber-dojo.org/kata/edit/0D0660?avatar=zebrahttps://github.com/yesterdaysun/Kata/tree/master/24points