问题标签 [quine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10000 浏览

quine - 写Quine的“技巧”是什么?

我阅读了 Ken Thompson 的经典论文Reflections on Trusting Trust,他在其中提示用户写一个Quine作为他的论点的介绍(强烈推荐阅读)。

quine 是一种计算机程序,它不接受任何输入并生成其自己的源代码的副本作为其唯一输出。

天真的做法只是想说:

但是很快就会发现这是不可能的。我最终使用 Python自己编写了一个,但仍然无法解释“诀窍”。我正在寻找一个很好的解释为什么 Quines 是可能的。

0 投票
2 回答
250 浏览

quine - 自我复制和有用的程序——不是一个quine

我有一个执行有用任务的程序。现在,除了执行原始任务之外,我还想在编译的可执行文件运行时生成纯文本源代码。这不是quine,但可能是相关的。

此功能通常很有用,但我的特定程序是用 Fortran 90 编写的并使用 Mako 模板。编译后它可以访问原始源代码文件,但我希望能够确保在用户运行可执行文件时源存在。

这有可能实现吗?

这是一个执行简单任务的简单 Fortran 90 示例。

是否可以修改此程序以使其执行相同的任务(编译时输出字符串)并输出包含源代码的 Fortran 90 文本文件?

提前致谢

0 投票
1 回答
655 浏览

java - 没有 main() 的 Quine 程序

我遇到了这个没有 main 方法的小程序:

有人可以解释这是如何工作的吗?谢谢。

0 投票
1 回答
113 浏览

python - 是什么让这个片段不是严格的 quine?

有人知道为什么这不是严格的 quine 吗?

0 投票
7 回答
31758 浏览

c - 打印自己的源代码作为输出的 C/C++ 程序

维基百科说它被称为quine,有人给出了以下代码:

但是,显然你必须添加

这样就printf()可以工作了。

从字面上看,由于上面的程序没有打印#include <stdio.h>,它不是一个解决方案(?)

我对“打印自己的源代码”的字面要求以及此类问题的任何目的感到困惑,尤其是在面试时。

0 投票
3 回答
541 浏览

language-agnostic - 奎因是什么意思?

所以我只是在维基百科上看到了奎因这个词,无法弄清楚它到底是什么意思。我对此感到困惑。它有什么实际用途吗?

0 投票
2 回答
1167 浏览

ruby - 了解红宝石奎因

我在 Wikipedia 上找到了这个代码块作为 Ruby 中 quine(打印自身的程序)的示例。

但是,我不明白它是如何工作的。特别是,我没有得到的是,当我删除最后一行时,我收到了这个错误:

语法错误,意外 $end,需要 tSTRING_CONTENT 或 tSTRING_DBEG 或 tSTRING_DVAR 或 tSTRING_END

这些行会发生什么?

0 投票
4 回答
10086 浏览

java - 打印自己的源代码的 Java 应用程序

我有一个小测验,我自己无法解决。我想构建一个程序,用java打印自己的源代码。任何人都知道如何做到这一点?像这个例子:

当我们运行它时,输出将是这样的:

我不知道该怎么做。有人知道解决方案或至少是提示吗?这不是反编译器,测验制作者告诉我提示是“静态”。

0 投票
1 回答
364 浏览

language-agnostic - 复杂的multi-quines是如何写的?

我将 multi-quine 定义为:

一组n种不同编程语言的程序,使得每个程序在没有输入时输出其确切的源代码,当给定n作为输入时,输出第 *n*th 程序的源代码。

不要与循环程序序列混淆,其中每个程序输出下一个程序的源代码,直到第一个程序输出。在这种情况下,每个程序都不是一个 quine,这就违背了这一点。这些循环集虽然对于n的高值来说是有趣的脑筋急转弯,但实现起来非常简单。

在这种情况下,复数表示“对于大于或等于2的n值”。我相信在这种情况下,解决方案足够复杂。但是,目标是所有n值的通用解决方案(阅读:策略)。n = 2

我了解“简单”的 quines 是如何编写的,但是我似乎无法理解复杂的 multiquines,这让我着迷。我的一部分希望除了程序员头脑中的聪明才智之外没有其他解决方案——尽管我认为这不太可能。

0 投票
1 回答
183 浏览

java - 使用反射的奎因

是否可以使用反射 API 在 Java 中编写一个 quine(其输出为自身的程序)来访问 quine 的代码,然后将其打印出来?即使添加了对输出没有影响的随机行,这样的程序仍然可以准确地打印出来。