생성일: 2019년 12월 02일
수정일: 2023년 07월 31일
수정일: 2023년 07월 31일
4clojure - Juxtaposition (59)
문제
(= [21 6 1] ((__ + max min) 2 3 5 1 6 4))
(= ["HELLO" 5] ((__ #(.toUpperCase %) count) "hello"))
(= [2 6 4] ((__ :a :c :b) {:a 2, :b 4, :c 6, :d 8 :e 10}))
제한 : juxt
풀이
(fn [a b &[c]]
(fn [& x]
(if c
(vector (apply a x) (apply b x) (apply c x))
(vector (apply a x) (apply b x)))))
juxt의 함수 동작을 구현하는 문제이다. 동작하는 방식은 ((juxt + max min) 2 3 5 1 6 4) 의 결과는 [21 6 1]이 되는데 + 는 21, max = 6, min = 1의 결과가 된다. juxt 함수의 내부가 저렇게 생기지 않았다고 생각이 들지만 문제의 답을 모두 충족하기 때문에 59번 문제 한정해서 충족한다고 생각한다.