我开始讨论项目Euler中的问题,我想用TDD风格来处理它,但是我很难找到不包含代码的问题的数字答案.是否有任何资源包含该数据,以便我可以制作测试用例,告诉我是否正确解决了问题?
我的动机是,我觉得算法是答案,而不是数字.如果我看一下别人的代码示例,就会破坏如何解决问题的挑战.
编辑:我正在寻找没有上下文或算法的答案的数量,以便我可以做类似以下的事情.我知道它更冗长,但我希望能够通过/失败结果告诉我我的算法是否正确,而不是查看其他人的代码示例以了解我是否已正确完成.
import unittest
class ProblemOneTest(unittest.TestCase):
def test_me(self):
self.assertEquals(solve_problem_one(),233168)
if __name__ == '__main__':
print "Problem 1 possible answer: %d" % solve_problem_one()
sys.exit(unittest.main())
Run Code Online (Sandbox Code Playgroud)
Eli*_*sky 11
TDD和项目欧拉任务不一定很好.首先,TDD不会帮助您解决任何项目的Euler(PE)问题.这让我想起了一个人通过使用TDD来"解决数独"的众所周知的尝试.
TDD不是一种设计技术.在适用时它可能非常有用,但不要将其视为银弹.
PE问题通常涉及一些以单个数字结尾的繁重计算,这就是答案.为了谨慎应用TDD,我建议将它用于您将开发的数学实用程序,作为解决PE问题的一部分.例如,我的PE的utils模块包含用于计算素数,将数字拆分为数字,检查回文等的函数.该模块有一组测试,因为这些功能足够通用,可以进行测试.PE解决方案本身没有测试 - 他们唯一需要的真正测试是最终生成正确的答案.