C# - 360 352(跨平台- 332仅适用于Windows)
经过微高尔夫球和四舍五入的错误修复+由Ypnypn建议后编辑
在这个长度上并不是完全有力的竞争者-它几乎完全是参考文献的逐字复制-但是哦。:)
namespace System{class P{static int Main(string[]m){double p=Math.PI*2,a=int.Parse(m[0]),b=int.Parse(m[1]),q,t;for(;;)for(q=0;q<p;q+=p/200){var s=new string(' ',1920).ToCharArray();for(t=0;t<p;t+=p/1000)s[(int)(39.5*Math.Sin(a*t+q)+40)+(int)(11.5*Math.Sin(b*t)+12)*80]='#';Console.SetCursorPosition(0,0);Console.Write(s);Threading.Thread.Sleep(20);}}}}
内存消耗,每次刷新都会创建一个新的数组-最初(重新)使用StringBuilder,但是为了简短起见而牺牲了它。但是至少在我的旧Core2上刷新不到1毫秒。
在删除了一些(现在已经很累了)古老的高尔夫球之后,将其减少了8个字符之后,我尝试通过将其恢复为double而不是int解析,并返回80 * 24而不是1920来使它回到“诗意的” 360。不过,那仍然只有359个-而且我没有想到的其他任何单个字符添加功能确实可以为代码增加任何价值。所以我们只坚持352。:-)
展开(丢失高尔夫球前代码):
namespace System
{
class P
{
static int Main(string[] m)
{
double p = Math.PI * 2,
a = int.Parse(m[0]),
b = int.Parse(m[1]),
q, t;
for (;;)
{
for (q = 0; q < p; q += p/200)
{
var s = new string(' ', 1920).ToCharArray();
// Alternative - Windows console only:
// var s = new char[1920];
for (t = 0; t < p; t += p/1000)
{
s[
(int) (39.5*Math.Sin(a * t + q) + 40)
+ (int) (11.5*Math.Sin(b * t) + 12) * 80
] = '#';
}
Console.SetCursorPosition(0, 0);
Console.Write(s);
Threading.Thread.Sleep(20);
}
}
}
}
}
Windows控制台实际上接受输出许多null字符,从而导致输出(在图形上)与使用实际的空格字符(在图形上)相同-允许少一些字符来初始化字符数组。