Living Clojure의 Day2 과정은 4Clojure 문제 중에서 아래의 것들을 풀어보는 것이다.
- problem 13
(=__(rest[10203040])) - problem 14
(=__((fnadd-five[x](+x5))3)) - problem 15
(=(__11)22) - problem 16
(=(__"Dave")"Hello, Dave!") - problem 17
(=__(map#(+%5)'(123))) - problem 18
(=__(filter#(>%5)'(34567))) - problem 35
(=__(let[x5](+2x))) - problem 36
(=10(let__(+xy)))(=4(let__(+yz)))(=1(let__z))
2일차니까 어려운 문제는 없이 기본적인 내용들이었다. 하지만 2일차 하루 쉬었다 한것도 있고 하여 13번부터 정주행하여 54번까지 풀어버렸다.
54번까지 푸는 중에 간혹 어려운 문제들도 있었다.
특히 28번 문제는 좀 까다로웠는데, flatten을 직접 구현하는 것. 어려웠던 이유는 문제가 요구한 것이 (fn) 익명 함수를 구현하는 것이었고, loop/recur가 아닌 일반 재귀라면 쉬울 것을 아는 것이 loop/recur뿐이라 tail recursion으로 구현하려다 보니 꽤나 힘들었다.
하지만 (fn) 역시 이름을 가질 수 있고, 그러니 재귀가 가능하다. 연습문제 푸는 차원이라면 굳이 loop/recur안써도 좋았을걸..
댓글 없음:
댓글 쓰기