모두, Clojure의 Euler Project에서 어제 작업을 시작했는데 알아 내지 못하는 해결책 중 하나에 문제가 있습니다. 나는 이런 식으로 그것을 실행하려고Clojure 함수의 문제점
(defn find-max-palindrom-in-range [beg end]
(reduce max
(loop [n beg result []]
(if (>= n end)
result
(recur (inc n)
(concat result
(filter #(is-palindrom? %)
(map #(* n %) (range beg end)))))))))
:
(find-max-palindrom-in-range 100 1000)
을 나는이 예외 얻을 : 나는 가정
java.lang.Integer cannot be cast to clojure.lang.IFn
[Thrown class java.lang.ClassCastException]
가에 있음을 의미를
나는이 기능이 어떤 곳에서는 Integer를 함수로 평가하려고합니다. 그러나 나는이 곳을 찾아 무엇보다 저를 난처하게하는 것은 단순히 이런 식으로 평가하면 모든 것이 작동하지 수 (상수 매개 변수 난 그냥 함수 정의를 제거했습니다 교체)
을 이(reduce max
(loop [n 100 result []]
(if (>= n 1000)
result
(recur (inc n)
(concat result
(filter #(is-palindrom? %)
(map #(* n %) (range 100 1000))))))))
사전에 도움을 주셔서 감사 드리며 미안하지만 바보 같은 실수로 귀찮게 생각합니다. Btw 나는 Clojure 1.1과 ELPA의 최신 SLIME을 사용하고있다.
편집 : 여기 코드는 is-palindrom입니까?. 숫자의 텍스트 속성으로 구현했습니다. 숫자가 아닌.
(defn is-palindrom? [n]
(loop [num (String/valueOf n)]
(cond (not (= (first num) (last num))) false
(<= (.length num) 1) true
:else (recur (.substring num 1 (dec (.length num)))))))
나는 문제가'입니다 - 회문 생각? 당신의'찾기-MAX-회문 -에 - range'을 나는'없는-회문을 구현할 때 나를 위해 작동?' – Jonas
이후'기능 is-palindrom의 코드를 추가 했습니까? 질문에. –
Clojure에서'is-palindom? '의 더 좋은 이름은'palindrome?'입니다. –