我看到一个由正方形制成的双龙曲线的酷图,不知道如果我们从另一个基本图像开始会发生什么。所以我写了一个程序来做到这一点。
太酷了,我以为作为挑战来做会很有趣。
任务
您将拍摄一个正方形图像,其边缘长度为2的幂(大于4)。
要制作此图像,您应先将图像分成4个相等大小的垂直带,然后将相邻的带沿相反方向移动为图像大小的八分之一(移动的带应环绕到另一侧)。然后,您应该在每次将图像分为两倍的分割并向上一次移动一半时重复此过程。每次迭代都应在垂直和水平移位之间交替。您应该进行迭代,直到移位要求您移位完成的点数像素(始终为1/2)。
从左向左垂直移动奇数编号的带(零索引)时,应向下移动,而偶数向上移动。水平移动时,从顶部起奇数编号的频段应向左移动,而偶数编号的频段应向右移动。
您只需要输出/显示转换的最终结果,而不是像gif所示的所有中间步骤。
这是代码高尔夫球,因此目标是最小化以字节为单位的源代码长度。
通过示例工作
我将逐帧浏览页面顶部显示的cat gif。
这是起始图像:
该图像为512 x 512像素。我们将其分为4个频段,以将每个频段垂直移动和移动1/8图像尺寸(64像素)。
现在,我们将其分为两倍的频段(8个频段),并将其移动到上次的一半(32像素)。这次我们将水平移动。
现在,我们这次再次垂直移动,分为16个波段,每个波段移动16个像素。
32波段8像素水平移动
64波段4像素,垂直移位。
128个波段,2个像素,水平移动。
256个波段,1个像素,垂直移位。
由于下一个移位将要求我们将每个波段移动半个像素,因此我们将在此处停止并输出结果。
测试用例
我有一个可以制作这些图像的工作脚本,所以我想我会让你们选择测试用例的图像。因此,如果您有一个平方的图像是2的幂次方,那么您希望看到它变成龙形。随时将其发送给我,我将其作为测试用例。
您还应该在纯白色或纯黑色图像上进行测试,以便确定像素是否消失。
**Start** by shifting one 8th of the size of the image
那么repeat ... each time splitting the image into twice as many divisions and shifting half as far as the previous time
第一次是1/8,第二次是1/16。第三个1/32,直到像素数为小数为止。我看不出有什么不清楚的地方。