2014-01-13 3 views
0

나는 어떤 양 y와 인덱스 n과 함께 벡터 (중첩 된 벡터 일 수도 있음)를 입력으로 사용하는 함수를 만들고 있습니다. 본질적으로 함수는 벡터의 n 번째 요소 다음에 y를 추가하고 나머지 요소와 인접합니다. 지금까지이 계획대로 작동하지하지 않는 서면 다음있다 : 당신이 최종 값으로 벡터를 반환 할 경우n 번째 인덱스에 요소 추가하기

(defn funcs [x y n] 
(concat (take (- n 1) x) (concat (take-last (- (count x) n) y)))) 

답변

3

, 당신은 into를 사용하여 벡터을 연결해야합니다 (시간 선형 오른쪽 피연산자의 크기로) 또는 core.rrb-vectorcatvec (로그 시간이지만, 결과 벡터는 전체적으로 다소 느려질 것입니다). 실제 구현에 관해서는

, 당신은 core.rrb 벡터와 함께 가고 싶은 가정 :

(require '[clojure.core.rrb-vector :as fv]) 

(defn append-after-nth [x y n] 
    (fv/catvec (fv/subvec x 0 n) y (fv/subvec x n))) 
+0

내 순진 솔루션이되었을 것보다 훨씬 더! –

+0

의존성 [org.clojure/core.rrb-vector "$ {version}"]'이 문제를 일으키고 있습니다. 그것은 인덱스 59에서 경로에 불법 문자가 있다고 말합니다. 이것은 필자가 lein deps와 같은 문제를 경험 한 첫 번째 사례입니다. – sunspots

+1

"$ {version}"대신 실제 버전을 제공해야합니다. "0.0.10". –

관련 문제