ads*_*ads 5 quine turing-complete
我已经创建了一个图灵完整的编程语言(已经过验证),因此必须可以为它编写一个quine,对吧?
但是我所知道的所有quines都将它们的源代码存储在一个字符串中,然后使用chr和之类的东西替换它中的特殊字符ord.
我的语言只有以下内容
我不知道如何写一个quine,因为我没有真正的字符串操作可用,我只能输出常量字符串.然而,它是100%图灵完成.
如果你有整数,你可以对字符串进行编码或解码(像 A=1、B=2 等简单的方案就足以做到这一点)。您只需要能够比较常量字符串或比较 int。因此,似乎没有什么根本性的问题。
\n\n你处理数字并写下类似的东西
\n\nif (n == 1) print "A"\nif (n == 2) print "B"\n...\nRun Code Online (Sandbox Code Playgroud)\n\n可能存在一些实际困难。字符串的问题不在于其中包含字符,而在于它们相当于非常大的数字。这里您需要的是访问无限精度的数字或某种固定大小数字的数组,或其他大型数据结构。数字数组可以完成字符串的功能。但如果你的语言是图灵完备的,它应该有一种方法可以轻松访问一些大块内存
\n\n图灵完整语言仅限于 32 位磁带(或者您必须为每个不同的 32 位内存空间指定新名称)将是一种遗憾,不确定您是否可以编写具有此类限制的 quine。顺便说一句,如果您没有数组或类似的结构,那么了解如何证明您的语言是图灵完整的会很有趣。我通常使用的常用方法是使用我的语言实现一些图灵机。但要做到这一点,我需要某种数组来模拟乐队。
\n\n这种编码基本上就是 G\xc3\xb6del 在其不完全定理中所做的,找到某种方法将逻辑表达式编码为整数,然后对其进行推理。
\n\n如果你给出更多的语法元素,我们甚至可以尝试这样做(如果你没有函数而只有 goto,这也会是一个问题,但你也可以模拟它)。基本问题是您必须找到一种方法来“压缩”编码的源代码。如果您有可用的长字符串常量,它可能会有所帮助。
\n