技术来实现基内斯

几年前,我在想办法,使它打印自己的源代码的程序,我想出了这两种方法:

  • 程序打印基于可执行文件的名称(APP1打印app1.cpp)的.C或.cpp文件。 但是这会在情况下,.cpp文件位于别处失败。
  • 该计划使“聪明”的使用字符串(我忘了这个源代码),并打印本身。

是否有任何其他算法的程序可用于打印自己的源代码?

--------------解决方案-------------

我觉得你的两个cases语句包括所有选项。 壳体(1)覆盖的形式的情况下,“从外部装置加载的节目源”,而情况(2)覆盖的形式的情况下,“编程方式生成的节目源”。 当然,你可以考虑像“从文件中读取程序的前半部分,然后以编程生成下半年,”混合的方法,但这似乎并没有从上述你有什么不同。

由于史蒂夫在评论中指出的情况下,1)通常不被认为是奎因,大概becasue其essetially琐碎的,可以做文件的任何语言​​做I / O

情况2)是当他们说奎因的“巧妙地利用字符串'是你正在展示了部分大多数人的意思。

在某些语言中有一个第三外壳(其也通常不计为一个真正的喹因为它甚至比壳体1更简单)。 如果语言允许在根本没有任何语句的程序得到很好的形成那么这个“空”程序将照常打印什么,这当然是与它的源代码。 如TCL脚本:

将打印:

;)

程序不必是“可执行的”与特定的“名”,和源代码不一定是在“文件”与一个特定的“名”。 这些都是现代的操作系统,完全无关手头的作业的所有文物。

char*f="char*f=%c%s%c;main()
{printf(f,34,f,34,10);}%c";
main(){printf(f,34,f,34,10);}

(在一行中)

有很多这样的代码在http://www.nyx.net/~gthompso/quine.htm

对我来说这是最好的方法:分配代码变量并反复使用它。

分类:算法 时间:2015-03-15 人气:3
本文关键词: 算法,语言无关,奎因
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.361 (s). 10 q(s)