대략 이렇게 하면 됨



(defn open-doors [n doors]

  (if (zero? n)

    doors

    (recur 

     (dec n)

     (for [[i s] doors]

       [i (if (-> i (mod n) zero?)

            (not s)

            s)]))))


(defn doors [n]

  (->> (map vector (range 1 (inc n)) (repeat n false))

       (open-doors n)

       (keep (fn [[i s]]

               (when s

                 i)))))


아 그리고 이런거로 함수형 언어가 어쩌구 이런건 다 에런데... 일단 저런식으로 하다 보면 대입 때문에 발생하는 버그는 없을 수 밖에 없고, 클라우드에서 무한 확장으로 돌려도 문제 안됨. 사실 클라우드 때문에 조금 유행이지 함수형언어 ㅇㅇ