为什么这个方案代码无法解决第一个问题?

时间:2014-05-27 08:17:32

标签: scheme

问题在于:http://www.spoj.com/problems/TEST/

我的方案解决方案是:

(define (main) 
  (let ((line (read-line)))
    (if (or 
          (eof-object? line)
          (string=? line "42"))
        (void)
        (begin
          (display line)
          (newline)
          (main)))))

(main)

报告

  

运行时错误(NZEC)

但我不知道为什么会出错。

1 个答案:

答案 0 :(得分:1)

您应该在提交之前安装guile并尝试使用代码。 Guile默认情况下没有read-line可用。您需要将其添加为第一行:

(use-modules (ice-9 rdelim))

所以会发生的是,guile发布错误并将非零值返回给父进程,这反过来表明程序没有正常终止。然后,SPOJ将报告为NZEC。

guile错误看起来像这样:

sylwester@sylhp ~> guile test.scm
ERROR: Unbound variable: read-line

每当你获得NZEC时,你应该尝试在本地运行以发现错误。