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