-
-
Notifications
You must be signed in to change notification settings - Fork 199
config.json: Assign and order problems by difficulty #402
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
Conversation
| ] | ||
| }, | ||
| { | ||
| "slug": "sublist", |
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.
sublist as the third problem was an interesting choice... how has that worked out for us?
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 think it was too hard to be at the start, because people don't have yet a good understanding of recursing.
|
Increase difficulty of our robot-name (edited into PR desc). We use IO monad, and #193 (comment) indicates there is difficulty jump. |
|
Maybe I should insert the topics in this PR too so we can easily justify the placements. That involves combining our lists though, a lot of work right now. |
|
Feel free to leave the classification for later if you like. It's really a lot of work. The dificulties and reordering are already huge contributions. Thanks! 😄 |
|
Another approach I can take, if this PR is too confusing, is to first make one PR to assign difficulties to the exercises (which we can discuss). And then after we have decided the difficulties, we can figure out individual reorderings we want to do. That is probably most useful if we don't think we will strictly order by difficulty. |
|
Even if we decide not to order by difficulty, we can do it later. The only reason I can think to avoid reordering is if we intent to reorder everything again soon, so we two changes. |
| { | ||
| "slug": "list-ops", | ||
| "difficulty": 1, | ||
| "slug": "beer-song", |
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.
really? Is beer song really easier than house? Of the three, I thought the difficulty is house < beer song < food chain.
I am proposing we switch beer-song and house difficulties and thus positions.
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.
If I remember correctly, in beer-song the paragraph is just a function of a number. But the paragraphs have a lot of small variations.
In house we have a cumulative song, which is not that hard in Haskell, but the repeating pattern is a little more complex to get.
That said, I don't really care about the order, but it would be nice to put all thee far from each order, so that people don't get tired of the same type of exercise.
I think that food-chain is the hardest by far.
config.json
Outdated
| { | ||
| "slug": "custom-set", | ||
| "difficulty": 1, | ||
| "slug": "simple-cipher", |
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.
this does have an IO monad, because of the random aspect. Thus, should we make it even higher than a 5? Compare against bank-account and linked-list both are 6.
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.
Random is hard...specially if people don't know IO yet.
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.
Maybe we are missing an exercise to introduce IO without other complications...like random or mutable state.
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'll move it to 6.
Maybe we are missing an exercise to introduce IO without other complications...like random or mutable state.
Hmm, any ideas on what we would do? Console interactoins seem simple but probably a bit hard to test. File operations a bit more complex.
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.
Maybe package silently can do it, but I didn't tested it.
If it works we can choose an interesting exercise to change and print the results. It would be a good introduction to the IO monad.
config.json
Outdated
| { | ||
| "slug": "pythagorean-triplet", | ||
| "difficulty": 1, | ||
| "slug": "bank-account", |
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.
bank--account and robot-name (both IO monad) next to each other - is that OK, or should they be separate? is it good to have two consecutive to reinforce the concept, or apart so that people get a break?
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.
Maybe having at least one exercise between exercises of the same type is a good idea.
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.
OK, moved them apart.
config.json
Outdated
| { | ||
| "slug": "saddle-points", | ||
| "difficulty": 1, | ||
| "slug": "queen-attack", |
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.
a bit borderline on this one being a 6, it could be lower, maybe a 5. the math is not too hard, do have to print out the borad though.
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.
Follow your instincts! 😄 👍
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 decided to move it to 5, then.
All right, I'll try my best to get something we like now, then, to reduce the chance of having to change it again later. |
config.json
Outdated
| { | ||
| "slug": "connect", | ||
| "difficulty": 1, | ||
| "slug": "say", |
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 think say can be decreased. maybe even be a 6. It's not that bad...
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.
Certainly! It takes a lot of work, but is not that hard.
connect is hard.
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.
Yeah, down to 6 with you, say.
| { | ||
| "slug": "zipper", | ||
| "difficulty": 1, | ||
| "slug": "lens-person", |
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.
lens-person 9 or 10? If you really want to understand the types, they can take a while to wrap your head around. But once you understand them the rest of the problem is not so hard.
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.
humm...I would go for a 9.
As part of the work in #274.
|
Okay, I'm done with this round of changes. |
rbasso
left a comment
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.
Looks perfect! 👍
Merging...
As part of the work in #274.
To discuss: Are all these difficulties right for us? I got lazy sometimes and looked at what difficulties F# track assigned them, since they are also functional and have all exercises except lens-person. there are some notable exceptions
robot-nameis significantly higher - we use IO monadnth-primemay be lower since we can be lazyclockis higher - it introduces a typeclassShould we strictly order the exercises by difficulty, or is there sometimes a situation where we want to send a harder problem before an eaiser?