Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save chrisvest/952056 to your computer and use it in GitHub Desktop.
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) []))
@igstan
Copy link

igstan commented May 5, 2011

Well, this is brilliant. Nicely done.

@chrisvest
Copy link
Author

Thanks :)

@minikomi
Copy link

Wow.. fantastic solution.
How did you go about approaching a problem like this?

@chrisvest
Copy link
Author

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?

@minikomi
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment