SPOJ中的Haskell:问题中的“错误答案”,但在我的计算机中是正确的

时间:2010-07-30 09:40:40

标签: perl haskell

今天,我在SPOJ上向the COINS problem提交了解决方案。我接受了Fortran和Perl解决方案,但我在Haskell解决方案中得到了“错误答案”。我想也许我的代码在某些时候可能有问题,但是200K数字的结果(上限为100K,下限为100K)与Perl解决方案完全相同,如下所示:

angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$ seq 1000000000 -1 999900001 > p346.in
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$ seq 0 100000 >> p346.in
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$ ./p346.pl < p346.in > p346.po
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$ ghc --make -o p346.exe p346.hs
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$ ./p346.exe < p346.in > p346.ho
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$ diff p346.ho p346.po
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$ head -n 5 p346.ho
4243218150
4243218150
4243218150
4243218150
4243218150
angelv@vaso:~/Dropbox/ProgrammingGym/SPOJ$

有没有办法找到可能发生的事情(可能是生成输出的最后几行?)。

1 个答案:

答案 0 :(得分:1)

据我所知,没有办法在SPOJ中查找输出。但我认为你可以生成错误,所以SPOJ编译器说“嘿,你有这个运行时错误!”,但它会由你引起,所以,你可以看到它失败了。 (我没有测试过它,但是..如果你返回一个非零值(如果在Haskell中有可能),SPOJ会不会告诉你结束号码吗?)

我看不到你的Haskell代码,我认为你已经在Haskell中做了其他问题,所以,你已经处理了一些小错误,比如“在最后留下一个空白的链接”或者重读最后一个输入线。

抱歉我的英语不好,如果我的回答不符合您的预期,那就很抱歉(这个任务。我不会频繁使用SPOJ,也许有另一种方式,但是我想到的唯一方法是“如果你想调试它,抛出错误并区分它们。”

我不知道这应该是答案还是应该在第一篇文章中发表评论,但我不能在那里添加评论,我认为这是因为我是新来的。

编辑:我在Haskell IRC频道中问过,一个非常温和的用户告诉我“System.Exit”。 看一看,我希望它能帮到你: http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/System-Exit.html

也许还有另一种从SPOJ“调试”你的程序的方法,但我不知道如何。您是否尝试过对此问题进行评论或在论坛中提问?您也可以在Haskell的IRC中发布您的Haskell代码,并询问是否有人可以查看它。