Conway's Game of life
视频教程
- Two Daniel Pair Live Show session 1
- Two Daniel Pair Live Show session 2
- Two Daniel Pair Live Show session 3
问题
细胞自动机,由一堆格子构成的封闭空间,尺寸为N的空间就有 N×N 个格子。每一个格子旁边都由邻居格子存在。 每个格子的生死遵循下面的原则:
- 如果一个活细胞周围有两个或者三个活细胞,则这个细胞为生。
- 如果一个活细胞周围少于两个活细胞,则这个细胞死亡。
- 如果一个活细胞周围有超过三个活细胞,则这个细胞死亡。
- 如果一个死细胞周围有三个活细胞,则这个细胞为生。
工作方式
- 远程结对编程
- 测试先行
- 小步快走
每45分钟休息一次小步快走的发布视频
工具
- rake
- rspec
- ruby
- vim
- git / github
- whiteboard
- AntiRSI / Timer
- SketchBook Express
原则
- Always drive code from requirement - 代码是从需求一步一步推演出来
- Limit red phase - 尽快让失败的测试用例通过,从而尽量缩短代码RED状态的时间
- Improve design only when code base is safe - 只有在代码安全的状态下,才去优化和改进设计
[Session 1] Feedback from RubyChina
- 对游戏规则不熟悉[fixed]
- 对极为细小的单元测试步伐不适应[fixed refs to 原则2]
- 为什么不用自动测试工具?[fixed]
- 尽量帮助初学者学习TDD的方法,原理[fixed]
[Session 1] Feedback from Daniel Teng's friends
- 有些测试用例的沟通性不强[fixed]
- 接口设计不够友好[fixed]
TODO
deal with two dimension- switch i and j and @x_length and @y_length
merge has_2_alive_y_neighbors and has_2_alive_x_neighbors to has_two_neighborsissue with assert_gridmrege similiar codes: alive_y? and alive_x?pull parameters for left_cell_alive? and up_cell_alive?