본문 바로가기

프로그래밍 언어 노트/Clojure

(28)
[Clojure] 4Clojure 4 #43 Reverse Interleave (fn f [arglist argnumber] (->> arglist (map-indexed vector) (group-by #(mod (first %) argnumber)) (vals) (map #(map last %)) ) ) ;;-> Best answer : (apply map vector (partition n v)) #44 Rotate Sequence (fn f [n v] (let [newn (cond ( n (count v) ) (mod n (count v)) :else n)] (take (count v) (drop newn (flatten (repeat 2 v)) ) ) ) ) ;;-> repeat 가 아니라 cycle이 있음. #45 Intro to..
[Clojure] 4Clojure Easy 3 #30 Compress a Sequence (fn f [v] (map first (partition-by identity v) ) ) #31 Pack a Sequence (fn f [v] (partition-by identity v) ) ;;머지 파티션-바이 를 쓰는게 아닌가.. #33 Replicate a Sequence (fn f [vec repeat_number] (mapcat #(repeat repeat_number %) vec) ) #34 Implement range (defn f [s e] (take (- e s) ( (fn my-number-seq [s] (lazy-seq (cons s (my-number-seq (inc s)) )) ) s ))) #39 Interleave Two Seqs ..
[Clojure] 4Clojure Easy 2 #49 Split a sequence (fn mac [n vec] (list (take n vec) (take-last (- (count vec) n) vec)) ) // (fn mac [n vec] (map (fn [v2] (map (fn [v3] (last v3)) v2 )) (map val (group-by (fn [[i v]] (if (> i (dec n)) true false)) (map-indexed vector vec) ) ) ) ) //처음에 한버전 #29 Get the Caps (fn mac [para] (clojure.string/join "" (re-seq #"[A-Z]" para)) ) #32 Duplicate a Sequence (fn mac [para] (mapcat #(list..
[Clojure] 4Clojure Easy 1 안그래도 어려운데 오랜만에 보니 드롭게 어렵네 진짜.. #156 map Default (fn [x y] (zipmap y (repeat (count y) x) )) # 38 maximum value (fn [& args] (last (sort args))) #26 Fibonacci Sequence 재귀 (fn [n] ( (fn rec-fn [n c v] (if (> n c) (recur n (inc c) (conj v (reduce + (take-last 2 v)))) (conj v (reduce + (take-last 2 v) ) ) ) ) n 3 [1 1] ) ) 이터레이트 (fn [x] (nth (iterate (fn [y] (conj y (reduce + (take-last 2 y)))) [1 1..
[Clojure] 클로저 디자인패턴 http://clojure.or.kr/docs/clojure-and-gof-design-patterns.html -> Clojure Design Patterns (mishadoff.com) 한국클로저 사이트가 망해서 ㅡㅡ 영문원본 첨부 디자인 패턴이 뭔지도 모를때 봣던 글인데 요즘 다시 생각나서 한번 보니 아주 잘 정리되어있다 단순히 클로저에서 뿐만 아니라 함수형, 객체지향에서 언제 어떤 디자인패턴이 좋은가 알수있다.
[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 ..
[Clojure] 좋은 사이트들 1. repl https://repl.it/languages/clojure클로저 뿐만 아니라 다른 repl도 많이 제공하는듯클로저 web repl중에서 가장 좋은듯하다 2. 문제 http://www.4clojure.com/빈칸 체우기 문제 3. dochttps://clojuredocs.org/클로저.org 사이트에서 api나 ref보는것보다 여기가 제일 좋은듯.설명도 좋고무엇보다 다른 사람들이 올린 예시를 참고가능 영어가 어려워도 대충 보고 파악 가능하다.
[Clojure 연습] 4. 4Clojure Elementary 2 문제 #20 penultimate element 답 (fn [para-list] (last (drop-last para-list))) 다른 누구의 답에는 comp를 사용하였는데 (comp second reverse ) Comp는 중요해보인다. 풀이 Comp compare 가 아니라 composition이다. 일종의 함수조합을 만들어냄 ((Comp f g) x) 라면 f(g(x)) 하는 함수 가 되는듯 문제 #35 답 7 풀이 문제 #36 답 [x 7 y 3 z 1] 풀이 문제 #37 답 "ABC" 풀이 문제 # 57 답 [5 4 3 2 1] 풀이 문제 #71 Rearranging code -> 답 last 풀이 ->연산자는 진행순서를 고대로 나타내게 할수있음. -> 연산자는 첫 x 및 form을 계속하여..