gpt4 book ai didi

algorithm - 关于构建高阶 Quine 程序有什么想法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:47:51 32 4
gpt4 key购买 nike

这是一个特殊的 Haskell 程序,输出一个 Python 程序,输出一个 Ruby 程序,Ruby 程序输出原始的 Haskell 程序(来自 http://blog.sigfpe.com/2008/02/third-order-quine-in-three-languages.html)

更准确地说,输出是这个 Haskell 程序

q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']
main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end"

是一个Python程序,

$ runhaskell test.hs
def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'
q("def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'","def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end","q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']")

运行后输出一个Ruby程序,

$ runhaskell test.hs | python
def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end
q("def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end","q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']","def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'")

最后,Ruby 程序打印出原始的 Haskell 程序。

$ runhaskell test.hs | python | ruby
q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']
main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end"

由于传统的 quine 程序可以通过将程序分为两部分来构建,其中部分 A 包含对部分 B 的描述,部分 B 根据描述计算 A。

但是这样的三阶quine是怎么构造出来的呢?

最佳答案

首先,围绕this programming assignment 转一圈.相信我,一旦你花一些时间,它实际上并不难。这个想法是,您可以编写一个程序,该程序可以将另一个程序作为输入,并吐出第三个程序作为输出,该程序结合了两个程序并理解其自身的文本。这是一种高阶奎因。如果您了解所有三种编程语言的结构,则可以从这项作业中汲取灵感并进一步扩展它们。

关于algorithm - 关于构建高阶 Quine 程序有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347578/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com