首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

这几行代码,惊为天人!

事情是这么一回事:

国外有个大佬在上发起了一个叫做  的比赛。

参赛者需要用编写代表三原色的RD、GR、BL三个函数,每个函数都不能超过140个字符。每个函数都会接到 i 和 j 两个整型参数(0 ≤ i, j ≤ 1023),然后需要返回一个 0 到 255 之间的整数,表示位于 (i, j) 的像素点的颜色值。

举个例子,如果 RD(0, 0) 和 GR(0, 0) 返回的都是 0 ,但 BL(0, 0) 返回的是 255 ,那么图像的最左上角那个像素就是蓝色。

参赛者编写的代码会被插进下面这段程序当中(我做了一些细微的改动),最终会生成一个大小为 1024×1024 的图片。

我选了一些自己比较喜欢的作品,放在下面和大家分享。首先是一个来自 Martin Büttner 的作品:

它的代码如下:

同样是来自 Martin Büttner 的作品

这是目前暂时排名第一的作品。它的代码如下:

下面这张图片仍然出自 Martin Büttner 之手

难以想象, Mandelbrot 分形图形居然可以只用这么一点代码画出:

Manuel Kasten 也制作了一个 Mandelbrot 集的图片,与刚才不同的是,该图描绘的是 Mandelbrot 集在某处局部放大后的结果

它的代码如下:

这是 Manuel Kasten 的另一作品

生成这张图片的代码很有意思:函数依靠 static 变量来控制绘画的进程,完全没有用到 i 和 j 这两个参数!

这是来自 githubphagocyte 的作品

它的代码如下:

这是来自 githubphagocyte 的另一个作品

这是一张使用 diffusion-limited aggregation 模型得到的图片,程序运行起来要耗费不少时间。代码很有意思:巧妙地利用宏定义,打破了函数与函数之间的界限,三段代码的字数限制便能合在一起使用了。

最后这张图来自 Eric Tressler

这是由 logistic 映射得到的 Feigenbaum 分岔图。和刚才一样,对应的代码也巧妙地利用了宏定义来节省字符:

怎么样,短短几行代码,就能画出如此绚烂的图像,你有没有什么脑洞大开的想法?

有没有被惊到?可以右下角点个赞让我知道(捂脸)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20220505A023ZP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券