생성일: 2019년 12월 02일
수정일: 2023년 07월 31일

4clojure - Juxtaposition (59)

  1. 문제
  2. 풀이

문제

(= [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번 문제 한정해서 충족한다고 생각한다.

Tags: 4clojure Today I Learn