【问题标题】:My Clojure code doesn't produce any output on HackerRank, but it does everywhere else我的 Clojure 代码不会在 HackerRank 上产生任何输出,但它会在其他任何地方产生
【发布时间】:2015-04-30 05:26:21
【问题描述】:

目前我正在解决这个问题 "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 中,它假设使用 list 作为输入参数调用匿名函数,但是,我的代码什么也没产生,而是在我的机器上本地产生。我在 HackerRank 上尝试了以下代码:

(fn [lst] lst)

确实会产生lst的输出。我在这里做错了什么导致我的代码不一样?

【问题讨论】:

    标签: clojure jvm


    【解决方案1】:

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

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

    • 如果以列表形式给出,则对其应用get 函数会返回nil
    • 例如(get '(1 2 3) 1) ;=&gt; nil

    【讨论】:

    • 哦,谢谢!!确实是“(get'(1 2 3)1)”的问题,我没有意识到我使用向量而不是列表
    【解决方案2】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多