我的 Clojure 代码不会在 HackerRank 上产生任何输出,但它会在其他任何地方产生

My Clojure code doesn't produce any output on HackerRank, but it does everywhere else

目前我正在解决这个问题 “https://www.hackerrank.com/challenges/fp-sum-of-odd-elements

这是我的代码

(fn func[lst]
  ((fn sumOdd[sum, index]
   (if (< index (.size lst))
     (do
      (if (= (mod (get lst index) 2) 1)
        (do
          (sumOdd (+ sum (get lst index)) (+ index 1))
          )
        (do
          (sumOdd (+ sum 0) (+ index 1))
          )
      )
     )
    sum
   )
 )0 0)
)

在 HackerRank 中,它应该调用带有列表作为输入参数的匿名函数,但是,我的代码根本不产生任何东西,但它在我的机器上本地产生。我在 HackerRank 上尝试了以下代码:

(fn [lst] lst)

确实会产生 lst 的输出。我在这里做错了什么使我的代码不普遍相同?

到目前为止,我在您的解决方案中发现了一个错误。

问题陈述不保证解函数的第一个参数正确响应get函数。

  • 如果它以列表形式给出,则对其应用 get 函数 returns nil.
  • 例如(get '(1 2 3) 1) ;=> nil

试试这个

(fn [lst] (reduce + (filter odd? lst)))