01思考方法
先定义问题,再寻找答案
动手之前,用几句话写下输入、输出和约束。哪些条件可以改变,哪些必须保持不变?一个看似复杂的问题,往往在边界明确之后才有了可以讨论的形状。
再准备一个足够小的例子,手工走完一遍。让正确答案先变得具体,后面的实现与验证才有共同的参照。
随手记:什么样的结果,才算这个问题被解决了?
ALGORITHMS / EXPERIMENTS / ENGINEERING
把问题说清楚,把实验做扎实,把实现写简单。
这里收录一些关于算法学习与工程实践的简短笔记。
动手之前,用几句话写下输入、输出和约束。哪些条件可以改变,哪些必须保持不变?一个看似复杂的问题,往往在边界明确之后才有了可以讨论的形状。
再准备一个足够小的例子,手工走完一遍。让正确答案先变得具体,后面的实现与验证才有共同的参照。
随手记:什么样的结果,才算这个问题被解决了?
结果之外,也记下它从哪里来:数据范围、配置、版本,以及这次具体改变了什么。记录的读者,也包括过一段时间再回来看它的自己。
尽量一次只回答一个问题。把观察到的现象和对现象的解释分开写;如果证据还不够,就把不确定之处留下来,作为下一次实验的起点。
随手记:换一个人,能否沿着记录走到同一个结果?
先看看已有代码和工具能做什么,再决定是否增加新的东西。清楚的命名、直接的控制流和恰当的边界,比层层包装更容易帮助后来的人理解意图。
为真实存在的需求写代码,也为真实可能发生的失败留出处理方式。验证关键行为之后,再回头删掉那些没有必要的分支和重复逻辑。
随手记:这一层复杂性,解决的是哪个具体问题?
ABOUT THIS SPACE
Algorithm Lab 关注从想法到实现的过程:如何提出问题,如何设计实验,如何把经验整理成可以复用的知识。这里的内容保持简短,留一点空间给阅读、思考和继续探索。