2014-03-04 154 views
0

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

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

enter image description here

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

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

我怀疑我需要找到一些其他的方式让图像出来,所以任何关于图书馆的建议都会很棒。

+0

大多数字符类型是大于宽度高,所以它是将用印刷字符是困难的。 – trumpetlicks

+0

输出中每个“单元位置”的2或3个字符通常为大致方形单元。在我们讨论提示时,还要考虑您只需要存储二进制0和1,并对上面的两个值进行异或运算以得到模2结果。而且,当你使用不同的颜色时,模3(比如说)会更有趣。 :-) –

+0

哦,是的,为了更好玩,请考虑在位置(x,y)输出'x&〜y'。呵呵。 –

回答

0

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

0

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

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

在这里寻找写这样一个矩阵出.bmp(或位图)文件。

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