プロジェクトオイラーの問題に取り組んで、Clojureを学ぼうとします。私は問題7にいます。
nullpointerを取得しているのですが、いったい何を間違えたのか理解できません。
;;By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can
;;see that the 6th prime is 13.
;;
;;What is the 10 001st prime number?
(defn isPrime [x]
(if-not (> x 2) false (loop [i 2]
(if (= i x)
true
(if (= (mod x i) 0) false (recur (inc i)) )
)
)
)
)
(loop [ x [2]
y 3 ]
(if (= (count x) 6)
(println (last x))
( if (isPrime y) ((let [x (conj x y)]) (println (str (last x)))) )
)
(if-not (= (count x) 10001) (recur x (inc y)) )
)
( if (isPrime y) ((let [x (conj x y)]) (println (str (last x)))) )
javaによると、エラーはにあります。
これがトレースバックです。
gcoles@gcoles-pc:~/euler$ clj 7.clj
2
Exception in thread "main" java.lang.NullPointerException
at user$eval2.invoke(7.clj:21)
at clojure.lang.Compiler.eval(Compiler.java:6511)
at clojure.lang.Compiler.load(Compiler.java:6952)
at clojure.lang.Compiler.loadFile(Compiler.java:6912)
at clojure.main$load_script.invoke(main.clj:283)
at clojure.main$script_opt.invoke(main.clj:343)
at clojure.main$main.doInvoke(main.clj:427)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:415)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)
nullpointerは、実際にはループの周りで2回目まで発生しないため(print
その後にアフターを付けることで確認できlet
ます)、これは少し混乱します。
誰かがこれについて何かアイデアを持っていますか?ありがとう。