由于插入操作会向光标右侧与下方填充缓冲区,新的图表打印函数应先打印 Y 轴(纵轴),再打印图表主体,最后打印 X 轴(横轴)。这一顺序明确了函数的构成:
下面是完成后图表的示例效果:
10 -
*
* *
* **
* ***
5 - * *******
* *** *******
*************
***************
1 - ****************
| | | |
1 5 10 15
该图表的纵轴与横轴均标注了数字。不过在某些图表中,横轴代表时间,用月份标注会更合适,如下所示:
5 - *
* ** *
*******
********** **
1 - **************
| ^ |
Jan June Jan
事实上稍加思考就能想到多种纵轴与横轴的标注方案,任务可能因此变得复杂,而复杂会带来混乱。为避免这种情况,我们首次实现时最好选用简单的标注方案,后续再修改或替换。
这些考虑为 print-graph 函数提供了如下结构:
(defun print-graph (numbers-list)
"documentation..."
(let ((height ...
...))
(print-Y-axis height ... )
(graph-body-print numbers-list)
(print-X-axis ... )))
我们可以依次实现 print-graph 函数定义的各个部分。