_='_=%r;print _%%_';print _%_
Run Code Online (Sandbox Code Playgroud)
这是最短的python quine,还是可以做得更好?这个似乎改进了The Quine Page上的所有条目.
我不算琐碎的'空'程序,而且我不算Terry Reedy的提交,因为双引号(如果允许的话,"hello world"是一个quine?还是"'"那个问题? )
我已经看到很多基于C/C++的解决方案来解决这个问题,我们必须编写一个程序,在执行时打印自己的源代码.
一些解决方案
http://www.cprogramming.com/challenges/solutions/self_print.html
网上有更多解决方案,每个解决方案都不同.我想知道我们如何处理这样一个问题,解决它的人心中的问题.请给我一些关于这个问题的见解...虽然解释语言中的解决方案如perl,php,ruby等可能很容易......我想知道如何用编译语言设计它...
出于好奇,是否存在一个有效的zip文件(根据格式规范),除了自身之外什么都没有?
换句话说,实现的功能unzip
是否有一个定点?
我可以编写一个程序来以智能(非详尽)的方式搜索这样的修复点吗?
我也考虑过相反的情况,即如果zip
有一个定点,但可能是一个文件可以用不同的方式压缩(不同的算法,不同的压缩级别等等),因此f = zip(f)
对于某些文件是否成立f
是可能依赖于实现.由于拉链压缩是无损的,因此unzip
应该有一个"正式"的答案.
有谁探索过这个?任何指向相关URL的指针都表示赞赏.
我只是想知道它是否100%可能,如果我的语言是turing-complete,写一个打印出来的程序(当然不使用文件读取功能)
因此,如果语言只有真正必要的东西,以使其完成(我会证明通过将Brainf*ck代码翻译成它),如输出,变量,条件和gotos(地狱是的,得到的),我可以尝试在里面写一个quine?
我也问这个问题,因为我不确定quin是否直接符合图灵定律,即图灵机能够完成任何计算任务.我只是想知道,所以我不会尝试多年而不知道这可能是不可能的.
我认为这可能是一个经典问题,但我不知道答案.一个程序可以输出自己的副本,如果有的话,是否有一个简短的程序来执行此操作?
我不接受"空程序"作为答案,我不接受有权访问自己的源代码的程序.相反,我在想这样的事情:
int main(int argc, char** argv){ printf("int main(argc, char** argv){ printf...
Run Code Online (Sandbox Code Playgroud)
但我不知道如何继续......
我读了Ken Thompson的经典论文"信任信任的思考",其中他提示用户写一个Quine作为他的论点的介绍(强烈推荐阅读).
quine是一个计算机程序,它不接受任何输入并生成自己的源代码的副本作为其唯一的输出.
天真的方法只是想说:
print "[insert this program's source here]"
Run Code Online (Sandbox Code Playgroud)
但很快就会发现这是不可能的.我最后用Python 编写了一个,但仍然无法解释"诀窍".我正在寻找一个很好的解释为什么奎因是可能的.
我遇到了这个术语 - 奎因(也称为自我复制程序).只是想了解更多信息.如何写一个quine,他们在任何地方使用,或者他们只是一个有趣的运动?
我从Python开始,我可能会尝试用Python编写一个.有什么建议?
我遇到了一个在这个网站上打印自己的程序,即打印程序代码.
程序代码是:
#include <stdio.h>
char *program = "#include <stdio.h>%cchar *program = %c%s%c;%cint main()%c{%cprintf(program, 10, 34, program, 34, 10, 10, 10, 10, 10, 10);%c return 0;%c}%c";
//what is this line doing, what is the use of %c and %s and what properties of %c and %s are being used here?
int main()
{
printf(program, 10, 34, program, 34, 10, 10, 10, 10, 10, 10);
//what is this print function doing, and how?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并给出的解释是:
这里的两个关键技巧是使用带有嵌入式%s说明符的字符串,以允许字符串在打印时包含自身,并使用%c格式说明符允许打印出特殊字符,如换行符,否则无法嵌入到输出字符串.
我不明白该程序是如何工作的.我已经提到了我需要解释的线条,它们如何工作以及它们在做什么.请解释.
刚读完这篇博文:http://www.skorks.com/2010/03/an-interview-question-that-prints-out-its-own-source-code-in-ruby/
在其中,作者辩称使用quine作为面试问题的案例.我不确定我是否同意,但这不是这个问题的内容.
他继续在Ruby中构建一个quine并重构它以缩短它.然后他挑战读者,试着让它更短.
我玩了一会儿,想出了以下内容:
s="s=;puts s[0,2]+34.chr+s+34.chr+s[2,36]";puts s[0,2]+34.chr+s+34.chr+s[2,36]
Run Code Online (Sandbox Code Playgroud)
这是我第一次尝试过quine,我无法弄清楚如何缩短它.
你能想出的最短的Ruby quine是什么?如果您的实施需要,请发布解释.