介绍
[问题] 从数组{"dodo", "sco"}中随机输出元素到标准输出,当序列匹配"dodoscoscosco"重复3次时,输出"love injection♡"到标准输出。创建程序以
这条推文已成为公司的热门话题。
所以,我尝试用 Python 单行代码编写它。
这是一篇关于此类游戏的文章。代码
__import__('sys').setrecursionlimit(10**6);print((lambda f: f('','',0,f))(lambda s,l,i,f: s+'ラブ注入♡' if i==3 else f(s,'',i+1,f) if l=='dsss' else f(s,'',0,f) if len(l)>=4 else f(s+'ドド', l+'d',i,f) if __import__('random').getrandbits(1) else f(s+'スコ', l+'s',i,f)))执行结果
评论
我使用
lambda进行递归,因为循环和变量赋值在 Python 单行代码中有点麻烦。
但是,默认的递归深度 1000 是绝对不够的,所以我首先调用__import__('sys').setrecursionlimit(10**6)将深度适当地设置为 $10^6 = 1,000,000$。此外,在手头的 WSL2 环境下(Windows 11、Ubuntu 20.04 LTS、Python 3.8.10),有合理的概率会落在
Segmentation fault。
此外,在 Windows 环境(Windows 11、Python 3.10.5)中,它会 100% 静默下降。这似乎是堆栈溢出,因为它以错误代码3221225725 (0xc00000fd)结尾。综上所述
我是在下班后深夜紧张的情况下写的,所以可能还有一点改进的空间。
这种类似编程竞赛的问题很有趣,因为你可以看到各种人的各种代码。
写完后发现问题是“From array {"dodo","sco"},但是我没有使用这样的数组,严格来说可能是out了。后记
触发这条推文成为公司热门话题的同步,
我正在写一篇用 Java 代码回答新员工的文章。
https://qiita.com/na0y/items/1f5ed3ce215297d70d3a参考
- [Python] 使用 lambda 进行递归
- [python] 更改 python 最大递归深度
- 在python中获取随机布尔值?
- 进程以 Python 中的退出代码 -1073741571 (0xC00000FD) 完成
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308622236.html