생성일: 2019년 12월 17일
수정일: 2023년 08월 11일
수정일: 2023년 08월 11일
4clojure - Word Sorting (70)
문제
(= (__ "Have a nice day.")
["a" "day" "Have" "nice"])
(= (__ "Clojure is a fun language!")
["a" "Clojure" "fun" "is" "language"])
(= (__ "Fools fall for foolish follies.")
["fall" "follies" "foolish" "Fools" "for"])
풀이
(fn [st]
(sort-by clojure.string/lower-case (re-seq #"\w+" st)))
나눠서 sort 하면 되겠거니 하고 시도를 했다.
(clojure.string/split "Have a nice day." #" ")
;; ["Have" "a" "nice" "day."]
(sort (clojure.string/split "Have a nice day." #" "))
;; ("Have" "a" "day." "nice")
대문자가 생각대로 sort가 안되서 lowercase를 사용 하였다.
(sort #(compare (clojure.string/lower-case %1) (clojure.string/lower-case %2)) (clojure.string/split "Have a nice day." #" "))
;; ("a" "day." "Have" "nice")
되겠거니 하고 답을 제출 했는데 unittest failed가 나오는 것이다. 라이브러리가 지원을 안하는 것인가? 하고 생각을 해보니..마지막 단어에 붙어 있는 마침표가 문제 였다.
그래서 정규식으로 다시 바꿔서 시도를 했다.
(re-seq #"\w+" "Have a nice day.")
;; ("Have" "a" "nice" "day")
마침표는 버리고 단어만 분리가 되는 것을 알수 있다. 이것 때문에 잘 실행 되고 있는 사이트 탓을 하였다. 왜냐하면 repl에서는 잘 되어서 단순하게 생각 했던 것 같다.