介绍

[问题] 从数组{"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

参考


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308622236.html

相关文章:

  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2021-04-25
  • 2021-05-18
  • 2021-11-03
  • 2022-12-23
猜你喜欢
  • 2022-01-01
  • 2021-12-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2022-12-23
相关资源
相似解决方案