Haskell в SPOJ: «Неправильный ответ» в проблеме, но правильный в моем компьютере - PullRequest
3 голосов
/ 30 июля 2010

Сегодня я отправил решения по SPOJ на проблему с МОНЕТАМИ . Я получил решения Fortran и Perl, но я получил «Неправильный ответ» в решении Haskell. Я подумал, что, возможно, в какой-то момент мой код был неисправен, но результаты для чисел 200 КБ (100 КБ в верхнем пределе и 100 КБ в нижнем) точно соответствуют решению 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 Ответ

1 голос
/ 09 августа 2010

Как я знаю, в SPOJ нет способа найти выход. Но я думаю, что вы можете генерировать ошибки, поэтому компилятор SPOJ говорит: «Эй, у вас есть эта ошибка во время выполнения!», Но это будет вызвано вами, так что вы можете увидеть, где он выходит из строя. (Я не проверял это, но .. если вы вернете ненулевое значение (если это возможно в Haskell), SPOJ не сообщит вам это конечное число?)

Я не вижу ваш код на Haskell, и я полагаю, что вы уже столкнулись с другими проблемами на Haskell, поэтому вы позаботились о таких маленьких ошибках, как «оставить пустую строку в конце» или перечитать последнюю строка ввода.

Извините за мой плохой английский, и извините, если мой ответ не соответствует вашим ожиданиям (Квест. Я не использую SPOJ часто, и, возможно, есть другой способ, но единственный, который приходит мне в голову это «Если вы хотите отладить его, выбросить ошибки и дифференцировать их».)

Я не знаю, должен ли это быть ответ или должен быть комментарий к первому сообщению, но я не могу добавить комментарий там, я думаю, что это потому, что я новичок здесь.

Редактировать: Я спросил в IRC-канале на Haskell, и очень ласковый пользователь рассказал мне о "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 и спросить, может ли кто-нибудь взглянуть на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...