【发布时间】:2014-03-04 03:36:23
【问题描述】:
我一直在尝试做一些看起来非常具有挑战性的事情 --- 将等边三角形打印到命令行(Mac OS X 的终端)。我有一个程序可以计算帕斯卡三角形的第 n 行,直到某个用户指定的常数。众所周知,如果取帕斯卡三角形模二的值,则与Sierpinski's triangle 之间存在相关性。
我一直将奇数设置为 1,将偶数设置为 0,当我在终端上打印结果并缩小时,它看起来不错,除了它显然不是等边的事实。这是我的程序在缩小后的示例输出(所以零和一看起来很不同):
但我想知道......有没有办法让这个三角形看起来是等边的?还是我必须在其他地方打印输出?我一直在尝试不同的字体、不同的线宽级别,但我无法得到任何看起来接近等边的东西,即使这样,我也没有可靠的方法来检查这一点。部分问题还在于在终端上放大/缩小会导致不同的线宽和高度比例。
我的代码将要生成的行数作为输入。然后,在打印出每一行时会考虑该数字。因此,第一行(只是一个“1”)在打印 1 之前将有 n-1 个空格要打印。然后第二行必须在打印其实际内容之前打印 n-2 个空格(即“1 1” ),其中包括每个数字之间的空格,依此类推。它在 C++ 中,但我认为这无关紧要。
我怀疑我需要找到其他方法来获取图像,所以任何关于使用库的建议都会很棒。
【问题讨论】:
-
大多数字符类型的高度大于宽度,因此使用打印字符会很困难。
-
输出中每个“单元格位置”的 2 或 3 个字符通常大致为方形单元格。当我们在讨论技巧时,还要考虑到您只需要存储二进制 0 和 1,并对上面的两个值进行异或运算,即可得到模 2 的结果。而且,当您使用不同的颜色时,模 3(比如说)可能会更有趣。 :-)
-
哦,是的,为了更有趣,请考虑在位置 (x, y) 输出
x & ~y。呵呵。
标签: c++ pascals-triangle