대략 이렇게 하면 됨
(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)))))
아 그리고 이런거로 함수형 언어가 어쩌구 이런건 다 에런데... 일단 저런식으로 하다 보면 대입 때문에 발생하는 버그는 없을 수 밖에 없고, 클라우드에서 무한 확장으로 돌려도 문제 안됨. 사실 클라우드 때문에 조금 유행이지 함수형언어 ㅇㅇ
thread form인가가 재밋넹. 땡큐
for나 keep쪽에서 쓴 것도 보니까 괜찮네 destructuring인가 이용해서. ㅇㅇ 어느정도 clojure way가 감이 온다.
음..어차피 난 자바의 경우에는 akka를 사용하고 C++의 경우에는 poco의 이벤트핸들러 따위를 이용해서 actor 비슷하게 메시지 패싱을 하도록 구현해서 그건 별로 상관 없음.
어째튼 야이미친흉의 코드를 보니 내가 일단 destructuring을 알고는 있지만 제대로 못 쓴 것에 대해서 다시금 생각할 수 있게 됐고 뭔가 voca가 딸린다고 해야하나? 어째튼 배터리들이 뭐가 있는지 한번 쓱 보긴해야겠넹..
첨삭해줘서 감사하고 오늘도 Clojure로 돈 잘 버시고 월급 올려달라고 드립치는거 꼭 성공하길 기원함!
일단 나는 내가 잘하든 못하든 하루에 1시간씩 30시간정도는 더 투자해볼 생각..'ㅁ' 수고열!