回车与换行

下图是上古时期的机械打字机,每输入一个字符,滚筒会左移一小截(一个字符的宽度 + 字符间距,好在那时候打字机都是等宽字体)。当滚筒移动到最左侧,即纸张右侧已经和敲针对齐时(也就是打完一行字),会有响铃提示已经抵达行末。这时拉动左侧墨带盒上边的金属手柄(换行手柄),然后滚筒会被推到最右边,打字头对准了行首,这就是 CR(carriage return, 回车)。继续用力,换行手柄大约会被扳动 30 度左右,纸会被上卷一行(行高,line height),这就是 LF(line feed, 换行)。

拓扑排序的算法实现

对于一个有向图,可以通过拓扑排序(Topological Sort)来判断是否是有向无环图(Directed Acyclic Graph,DAG)。
我总结了一下拓扑排序的思想,下面来说一说。