旅行者悖论,3行程序,得不到结果啊
prolog吧
全部回复
仅看楼主
level 5
kgisme169 楼主
judge(Answer,IfAction,Action):-IfAction=Answer,Action="kill".
judge(Answer,IfAction,Action):-not(Answer=IfAction),Action="kill".
finalJudge(Answer,Action):-judge(Answer,Action,Action).%
上述内容保存成.pl文件,用swiprolog打开,Compile buffer,然后在命令行里面运行:
1 ?- finalJudge
% c:/Documents and Settings/zhang/My Documents/my1.pl compiled 0.00 sec, 0 bytes
1 ?- finalJudge("burn",Action).
false. 2 ?- finalJudge("kill",Action).
Action = [107, 105, 108, 108]
为什么finalJudge("kill",Action)得到是一堆没有意义的

2012年03月19日 12点03分 1
level 5
kgisme169 楼主
自己顶一下!
2012年03月20日 01点03分 2
level 5
kgisme169 楼主
不好意思,我在1L贴的程序有点错误,第二行的kill应该改成burn:
judge(Answer,IfAction,Action):-IfAction=Answer,Action="kill".
judge(Answer,IfAction,Action):-not(Answer=IfAction),Action="burn".
finalJudge(Answer,Action):-judge(Answer,Action,Action).%
执行结果是:
1 ?- finalJudge("burn",Action).
fail.
这是我想要的。谢谢。不过:
fail应该代表栈溢出么? prolog自己能判断,一个东西是不是无解?(这个似乎是停机悖论了,prolog不能判断有没有解吧).
但是栈溢出的话prolog怎么没有崩溃,也没有用完系统内存,而是立刻打印fail并退出了。
难道prolog解决了停机悖论?
2012年03月20日 06点03分 4
level 5
kgisme169 楼主
说的话和判决有关就无法做出判决----嗯,这句话是亮点。
多谢提点!
2012年03月21日 07点03分 7
1