6
可视化眼睛
您可能记得也可能不会记得Xeyes,它是X窗口系统附带的演示程序(据我所知,仍然附带)。其目的是在鼠标光标后画一双眼睛: 您的挑战是用ASCII艺术重新创建Xeyes。编写一个程序或函数,无论用户单击什么,它都会画出两只ASCII艺术眼(在下面指定),然后移动他们的瞳孔以指向光标的方向。 上面的GIF记录了这种非Golf的Ruby实现,可以与任何最新版本的Ruby一起运行。您可能还会发现它对于Xterm控制序列很有用。 技术指标 这是代码高尔夫球,因此以字节数最少的解决方案为准。 这是一个ASCII艺术的挑战,让你的程序必须提醒使用ASCII字符特异性,人物-,.,|,',0,空间和换行符。1 2 这是一个交互式的挑战,因此您的程序必须接受输入并实时绘制其输出。3 在程序开始接受输入之前,它应初始化至少20行20列的空白画布。除非用户单击画布,否则它不应绘制任何内容。 每当用户在画布上单击4时,程序应清除任何先前的输出,然后在画布上以最靠近鼠标光标位置的字符为中心绘制这些ASCII眼睛。5 6(以下✧表示鼠标光标,不应绘制。) .---. .---. | | | | | 0|✧|0 | | | | | '---' '---' 注意瞳孔如何“指向”光标。 每当鼠标光标在画布上移动时,程序应重新绘制瞳孔,使它们继续指向光标,例如7: ✧ .---. .---. | 0| | 0| | | | | | | | | '---' '---' 学生指点 假设我们枚举每只眼睛的内部九个字符的位置,如下所示: .---. |678| |591| …