-
-
Save chrisvest/952056 to your computer and use it in GitHub Desktop.
;; chrisvest's solution to http://4clojure.com/problem/53 | |
(fn [xs] (or (->> | |
(map vector xs (range)) | |
(partition-by #(apply - %)) | |
(map #(map first %)) | |
(filter #(> (count %) 1)) | |
(sort-by (comp - count)) | |
first) [])) |
Wow.. fantastic solution.
How did you go about approaching a problem like this?
Good knowledge if the available functions for the seq abstraction gives you a vocabulary for your thoughts, if that makes sense, so you can think at a higher level and therefore more effectively. Then I guess I just think about the data structure that comes into the function and the data structure I want out of it, and what path that might take. Then once I got something that works, I just golf it for the fun of it until something like this comes out.
This is probably not a very helpful description of how to solve problems in general :P
But basically, I ask myself that, if the problem is hard, then how can I get it into a data structure where the problem is easy?
No, that last phrase is particularly useful advice thanks. I tried this problem and ended up with a huge ugly nested if function .. So finding this concise answer was quite an eye opener.
Thanks :)