将等边三角形打印到终端

时间:2014-03-04 03:36:23

标签: c++ pascals-triangle

我一直在努力做一些看似令人惊讶的挑战 - 在命令行上打印等边三角形(Mac OS X终端)。我有一个程序可以计算Pascal三角形的第n行,直到某个用户指定的常量。众所周知,如果将Pascal三角形的值取模2,则它与Sierpinski's triangle之间存在相关性。

我一直将奇数值设置为1,偶数值设置为0,当我在终端上打印结果并缩小时,它看起来不错,除了它显然不等边的事实。这是一个示例输出我的程序后缩小出路(所以零和一些看起来很不一样):

enter image description here

但我想知道......有没有办法让这个三角形看起来等边?或者我是否必须在其他地方打印输出?我一直在尝试不同的字体,不同的线宽水平,但我无法看到接近等边的任何东西,即使它确实如此,我也没有可靠的检查方法。部分问题还在于,在终端上放大/缩小会导致不同的线宽和高度尺度。

我的代码将输入要生成的行数作为输入。然后,在打印出每行时将该数字考虑在内。所以第一行(只是一个“1”)在打印1之前要打印n-1个空格。然后第二行必须打印n-2个空格才能打印其实际内容(即“1 1”) ),包括每个数字之间的空格,等等。它是用C ++编写的,但我认为这不重要。

我怀疑我需要找到一些其他方法来获取图像,因此任何有关库的建议都会很棒。

2 个答案:

答案 0 :(得分:0)

一个不错的选择是将三角形渲染为您选择的栅格格式,并使用aaliblibcaca将该图像渲染到终端。

答案 1 :(得分:0)

我会尝试(我认为你已经有)弄清楚图像最终的实际宽度和高度,并生成定义图像尺寸的2D矩阵。该矩阵可以是2D整数集(不小于24位宽,为8位颜色分量提供空间),或3个单独的2D矩阵,每个颜色分量一个。将所有这些值设置为您想要的背景颜色。

通过算法设置适当的像素,将其设置为您希望实际三角形显示为的其他颜色。

在这里查看将这样的矩阵写入.bmp(或位图)文件。

Writing BMP image in pure c/c++ without other libraries