Currently, we can’t look for solutions based on searching for keywords someone may have used in their solution.
Also, along with sorting by stars, or most recent, perhaps we could allow sorting by most performant (for languages like rust that have built-in benchmark), or fewest lines of code.
Also, allow folks to tag their solution as grokkable, as sometimes we may deliberately sacrifice brevity/performance for readability and maintainability.
This will help surface really good solutions from more recent members.
I like those ideas …
… except for the fewest lines of code. I’ve spent quite some time the past few years on other websites like LeetCode, HackerRank, CodeWars, etc. and the shortest solutions tend to be from code golfers or people who put everything on one line or use one-letter variables. These short solutions are hard to read and I don’t think we should encourage that. (just my 2 cents)
But tags like “fast”, “easy to understand”, “with explanations”, “dynamic programming”, “recursion”, “meta-programming”, etc. might be very helpful for discovering new things in other people’s solutions.
I’m skeptical such filters can be trusted to… nice extents.
- Filtering on keywords strikes me as potentially useful only in rare cases.
- Categorizing by performance is hard.
- Encouraging code golfing in published solutions is undesireable (on Exercism).
- Comprehensibility is hard to quantify. Also, I do not trust most authors’ judgment (right after they have written their solution).
- Tags seem a somewhat good idea, except they tend to either be very coarse or else individually underused (because there are so many tags).
Please tell me I’m wrong. I want looking through community solutions to be nice too.
My partial solution to #1 would be to use Google search to do some of the filtering for me. The starting point would be a search of “TRACK_NAME on Exercism” “PUZZLE NAME” and then the keywords each in quotation marks so the results should include each one. So if I want a Python solution to Triangle using map, I’d use “Python on Exercism” “Triangle” “map” as a base. That brings up results for the Pascals Triangle exercise so I can append -“Pascals” to exclude it. That leaves me two results that use map.
filtering on keywords is my substitute for looking at alternative approaches to solutions. For example (for languages that support it), I might have written an imperative solution but I am looking for a functional approach etc. and trying to search by names such as
chain surface these results. I think @BNAndras solution works well- i found a nice solution via google search that would have been tedious to discover by going through each solution.
I think one easy filter could be to show only
mentored solutions as they tend to be good and perhaps these can be allowed to attach tags.
Maybe tag classification can be crowd-sourced. Bit of an out-there idea: use prediction markets to guarantee accuracy.
Another type of filter that does make sense to me: solutions written by trusted (or ‘favorite’) authors. This is already possible, but it is cumbersome: you have to enter the names manually again and again.