본문 바로가기

프로그래밍 언어 노트/Clojure

[Clojure 연습] 5. 4Clojure Easy 1

문제

 # 21

(fn [li idx] (last (take (+ idx 1) li)) )

해설

배웠던 take 로 자르고 그중에 마지막

 

문제

 # 22 count a Sequence

(fn [li] ((fn [l c] (if (empty? l)

                      c

                     (recur (rest l) (inc c)))) li  0))

 

;; best answer

#(reduce (fn [x y] (inc x)) 0 %)

 

해설

Best answer 미춋네..

Reduce 에서 Fn Var Seq 가 가능

Var를 넣어주면 첫번째 인자는 이놈이 넘어가게 가능

 

문제

 # 24

apply +

해설

너무 쉽고~

 

문제

 # 25

filter odd?

해설

 

 

문제

 # 23 Reverse a Sequence

(fn [raw] (let [li (vec raw)] (loop [n (- (count li) 1) l []]

           (if (< n 0) l

           (recur (dec n) (conj l (nth li n)))))))

 

;Best answer

(fn [r] (reduce (fn [li s] (cons s li)) '() r))

해설

참고

Vec -> vec 변환

Vector -> 요소를 가지는 vector 생성

 

//best 미춋네..

Reduce 에서 Fn Var Seq 가 가능

Var를 넣어주면 첫번째 인자는 이놈이 넘어가게 가능

 

 

문제

 # 27

(fn [s] (= (seq s) (seq (reverse s))))

해설

스트링을 reverse 하면 seq가 나온다 (\a \b \c)처럼

Seq(string) 하면 stringseq로 바꿀수있다 “abc” -> (\a \b \c)

List(string) 은 해당 스트링을 하나 가지는 리스트로 만듬 ㅜ


대가리 터지것네 ㅜ

개힘들게 푼다음에 best answer 찾아보면

기가 맥히게들 풀었다..

728x90