鱼C论坛

 找回密码
 立即注册
查看: 3306|回复: 17

[技术交流] 【小甲鱼】【七夕特供】一行流原理看法

[复制链接]
发表于 2022-8-5 11:22:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
希望来看的各位留个言

昨天小甲鱼发了一行流用python打印出爱心
print('\n'.join([''.join(['ilovefishc'[(x-y)%8]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' 'for x in range(-40,40)])for y in range(20,-20,-1)]))

这是小甲鱼的代码

这段代码中重要的就是关于x,y的不等式了
((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0

于是我就将它输入在Desmos中,得到以下图像:

函数图像

函数图像


果不其然,是一个心形

通过观察我们可以得出结论:

1. x,y 的取值一定在红心里,也就在红色方框内(只要(x,y)这个点在红心上即可)

2. x一定满足(-40<x<40):因为红色方框左右两端也就±20出头,y也一定满足(-20<y<20)

所以这一行代码就是这么来的
for x in range(-40,40)])for y in range(20,-20,-1)

不过仔细观察上面的代码可以发现两个for 循环不是一起的

如果是一起的,那(x,y)顺序打印出来应该是
(-40,20),(-40,19),(-40,18)......
#这样的话其实是不行的

为什么?我们可以把画面想象成一个80*40的空白画面,(0,0)是这个画面的中心点

那么我们想一下如果是像上面这段代码便利的话,有两个漏洞

1.他是从左往右一列一列遍历每个点(而我们需要的是从上往下一行一行遍历,这样才能打印出正确图案)

2.由于for循环位置不对,在join时导致不能正确地换行,也就是本来该在一行的数据应当组成一个列表

否则效果就是这样
 
 
 
 
 
 
 
 
l
o
v
e
f
i
s
i
#省略
.
.
.
#足足有80*40=3200行
所以就要向小甲鱼一样正确摆放好位置,源代码正确的遍历顺序就是(-40,20)#这就是80*40画面的最左上角那个点,(-39,20),(-38,20)......

这样就是从上到下一行一行遍历了

所以还可以把数据改一下

见下图

这是x(-60,60),y(30,-20,-1))

这是x(-60,60),y(30,-20,-1))


如果要改变爱心里的文字的,就要注意不要out of range了,%8是为了保证得到的数字在0~7之间(不过小甲鱼这里就因为%8,导致最后的'shc'三个没打印出来,改成%10就可以了)

其他的没什么说的了

以上是个人理解,我是一个新手,有些地方可能有错误,希望大佬萌指出

这是原数据打印出来的

这是原数据打印出来的

评分

参与人数 3荣誉 +7 鱼币 +9 贡献 +11 收起 理由
小甲鱼 + 2 + 3 + 3 鱼C有你更精彩^_^
青出于蓝 + 3 + 3 + 5
不二如是 + 2 + 3 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 11:25:24 | 显示全部楼层

回帖奖励 +10 鱼币

厉害厉害膜拜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-5 11:36:02 | 显示全部楼层
这个可以,不过要小很多

这个图像也可以

这个图像也可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 11:36:47 | 显示全部楼层

回帖奖励 +10 鱼币

学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 11:49:59 | 显示全部楼层

回帖奖励 +10 鱼币

7夕快乐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 13:34:18 | 显示全部楼层

回帖奖励 +10 鱼币

分析的很到位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 13:56:27 | 显示全部楼层

回帖奖励 +10 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-5 14:02:05 | 显示全部楼层

这一行流是谁写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 14:25:09 | 显示全部楼层

回帖奖励 +10 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 16:01:25 | 显示全部楼层

回帖奖励 +10 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 16:02:04 | 显示全部楼层

回帖奖励 +10 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 16:20:08 | 显示全部楼层

回帖奖励 +10 鱼币

太强了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-5 17:38:02 | 显示全部楼层

回帖奖励 +10 鱼币

赞一个~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2022-8-5 18:07:49 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 23:17:00 | 显示全部楼层
赞~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-5 23:17:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-14 02:47:32 From FishC Mobile | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-15 08:42:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 02:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表