本文件列出了各种 Quine 相关的编程挑战,按难度分级。
目标:用你最喜欢的语言写一个 Quine。
要求:
- 不接受任何输入
- 输出与源代码完全相同的字符串
- 使用标准输出
提示:
# 模板:s='s=%r;print(s%%s)';print(s%s)
# %r 会添加引号并转义特殊字符验证:
python quine.py | diff - quine.py目标:写一个 Quine,不使用显式的引号字符 " 或 '。
难度:⭐⭐
提示:使用 chr(34) 或 chr(39) 构造引号。
目标:写一个只有一行的 Quine。
难度:⭐
目标:写两个程序 A 和 B,使得:
- A 运行输出 B 的源代码
- B 运行输出 A 的源代码
难度:⭐⭐⭐
示例思路:
# 程序 A
b_code = "..." # B 的代码
print(b_code)
# 程序 B
a_code = "..." # A 的代码
print(a_code)目标:写三个程序 A、B、C 形成循环:A→B→C→A
难度:⭐⭐⭐
目标:写一个文件,它既是语言 X 的 Quine,也是语言 Y 的 Quine。
难度:⭐⭐⭐⭐
推荐组合:
- Python 2 + Python 3
- JavaScript + Python
- C + Python
技巧:利用两种语言都忽略的字符或注释语法。
目标:写一个 Quine,其中包含任意注释,但输出时不包含这些注释。
难度:⭐⭐⭐
目标:创建一个 5+ 语言的循环链。
语言链示例:Python → JavaScript → Ruby → Perl → C → Python
难度:⭐⭐⭐⭐⭐
当前记录保持者: Yusuke Endoh 的 128 语言 Quine Relay
目标:源代码本身是回文的(正读反读相同),且是一个 Quine。
难度:⭐⭐⭐⭐⭐
要求:
source == source[::-1] # 是回文
exec(source) == source # 是 Quine
目标:写一个 Quine,即使删除/修改任意一个字符,仍然输出正确的源代码。
难度:⭐⭐⭐⭐⭐
变体:
- 1-容错:容忍任意 1 个字符错误
- 2-容错:容忍任意 2 个字符错误
- k-容错:容忍任意 k 个字符错误
技巧:使用纠错码(Reed-Solomon, Hamming Code)。
目标:写一个程序,它:
- 输出自己的源代码
- 同时修改自己的源代码(添加注释、改变变量名等)
- 修改后的版本仍然是一个 Quine
难度:⭐⭐⭐⭐⭐
目标:创建一个 ZIP 文件,解压后包含的文件内容就是 ZIP 文件本身。
难度:⭐⭐⭐⭐⭐
进阶:
- 双重 ZIP Quine:解压两次得到原文件
- 无限 ZIP Quine:无限次解压都得到有效的 ZIP
目标:源代码是漂亮的 ASCII 艺术图案,且输出自身。
难度:⭐⭐⭐⭐
示例:源代码形状是一只猫,输出也是一只相同的猫。
目标:写一个可以玩的游戏(如贪吃蛇、俄罗斯方块),同时也是一个 Quine。
难度:⭐⭐⭐⭐⭐
目标:运行程序输出一个图形(如谢尔宾斯基三角形),且源代码的形状就是这个图形。
难度:⭐⭐⭐⭐⭐
目标:程序输出一段音乐的乐谱/代码,且源代码的结构对应这段音乐。
难度:⭐⭐⭐⭐⭐
目标:在每种语言中写出最短的 Quine。
当前已知记录(Python):
_='_=%r;print(_%%_)';print(_%_)(29 个字符)
限制:
- 不能使用文件读取作弊
- 必须完全自包含
目标:写一个有意义的、尽可能长的 Quine(但有实际功能)。
难度:⭐⭐⭐⭐
想法:
- 一个完整的 Web 服务器
- 一个机器学习模型
- 一个操作系统内核
目标:写一个 Quine,它输出一个高度压缩的表示,而不是直接输出源代码。
难度:⭐⭐⭐⭐⭐
目标:写一个程序,它不是一个 Quine,但输出一个 Quine。
进阶:写一个程序,它输出一个程序,后者输出一个程序...最终是 Quine。
难度:⭐⭐⭐⭐⭐
目标:用 Brainfuck 写一个 Quine。
难度:⭐⭐⭐⭐⭐
提示:Brainfuck 的 Quine 通常需要几百个字符。
目标:写一个正则表达式,它匹配自身。
难度:⭐⭐⭐⭐
目标:用纯 SQL(不使用外部脚本)写一个 Quine。
难度:⭐⭐⭐⭐
目标:写一个 Markdown 文件,渲染后的 HTML 文本内容就是 Markdown 源码。
难度:⭐⭐⭐⭐
目标:使用遗传算法,让程序自动演化成一个 Quine。
难度:⭐⭐⭐⭐⭐
每个挑战可以从以下维度评分:
| 维度 | 说明 | 权重 |
|---|---|---|
| 正确性 | 是否真的是 Quine | 40% |
| 优雅性 | 代码是否优雅简洁 | 20% |
| 创意性 | 是否有独特思路 | 20% |
| 文档 | 是否有良好注释 | 10% |
| 测试 | 是否有测试验证 | 10% |
入门:1 → 2 → 3
↓
进阶:4 → 5 → 6 → 7
↓
高级:8 → 9 → 10
↓
大师:11+ (任意组合)
- 🥉 Bronze Quiner:完成 5+ 入门挑战
- 🥈 Silver Quiner:完成 3+ 进阶挑战
- 🥇 Gold Quiner:完成 2+ 高级挑战
- 💎 Diamond Quiner:完成任何极限挑战
- 👑 Quine Master:完成 10+ 任意挑战
"The journey of a thousand quines begins with a single print statement."