我的 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)))
目前我正在解决这个问题 “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
函数 returnsnil
. - 例如
(get '(1 2 3) 1) ;=> nil
试试这个
(fn [lst] (reduce + (filter odd? lst)))