-
Notifications
You must be signed in to change notification settings - Fork 520
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add file that documents the thought behind problem order #167
Conversation
Seems like a good idea, so I'm supportive. 👍 you switched tournament/robot-simulator and sublist/allergies. I'll try to help out with the dominoes description |
problem | topics | ||
----- | ----- | ||
minesweeper | managing board state, Vec, heavy logic | ||
dominoes | The logic here isn't bad, I just don't quite understand the problem |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd say "graph theory, searching". Most solutions to this exercise either take the graph-theoretical approach (find a Euclidean cycle) or search solutions until finding one that works. I'm not sure how nuanced you want to be here - one could reasonably solve this problem only knowing one of these two topics, I'm not sure if there should be an "OR" in there somewhere.
The downside of this file is that we have to keep in in sync with config.json. I'm not sure of a way to leverage travis.yml to check that for us. Though maybe there is an approach. Even with that drawback, I think having this file is useful. The PR that kicked of our problem ordering process is already out of date. And having something in the repo (instead of a gist or a blog post) makes it easier to find.
559f73e
to
a2e7000
Compare
History: Thanks to the hard work of #167 and #127, we have topics in problems.md that tell why we ordered problems a certain way. After #229 (motivated by #179), we copied the topics into config.json, since now all tracks can take advantage of the "topics" concept. To reduce duplication, we can remove the topics and specific problems. This commit uses something more abstract, that states our values without going into the exact implementation. This requires less maintenance, and is less likely to go out of date than specifically listing problems. Since it only has the ordering philosophy and not the actual topics, it's time to rename it to problem_ordering.md. Closes #236
This has been a long time coming. Ever since #167 (comment) lifetimes should not have been a topic for rectangles. The reasons were discussed there already: * The "Putting it All Together" problems do not emphasise Rust language features in general. * The specific feature "lifetimes" is not implied by this problem. A sampling of ten submitted solutions shows two solutions with lifetimes. I used the exercism/problem-specifications#834 command to inspect other tracks' topics to see if we can glean any insight here. C#/F#: parsing, transforming Lua: strings, performance, control-flow (if/else, loops), algorithms Based on these, my recommendation: A possible topic is string parsing, because we are reading in a string and trying to make sense of it. However this is not parsing in the usual sense that one would use a parser for, which usually deals with text. If we were to declare "string parsing" a topic of rectangles, we would probably use it for ocr-numbers too (but we do not; the topics for ocr-numbers are lines, slices, chunks). "algorithm" is chosen because significant work will likely go into devising an algorithm for determining the rectangles, since that is not immediately obvious from the problem description. Solutions will likely display a diverse set of approaches. One might surmise that the alphametics exercise could have this topic as well, but this commit deals with rectangles only.
The downside of this file is that we have to keep in in sync with
config.json. I'm not sure of a way to leverage travis.yml to check that for
us. Though maybe there is an approach.
Even with that drawback, I think having this file is useful. The PR that
kicked of our problem ordering process is already out of date. And
having something in the repo (instead of a gist or a blog post) makes it
easier to find.