Skip to content

Conversation

@petertseng
Copy link
Member

@petertseng petertseng commented Oct 19, 2016

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

  • bank-account is significantly higher for us since we use IO monad for it
  • our robot-name is significantly higher - we use IO monad
  • our nth-prime may be lower since we can be lazy
  • our accumulate/strain may be higher since we require laziness
  • our clock is higher - it introduces a typeclass

Should we strictly order the exercises by difficulty, or is there sometimes a situation where we want to send a harder problem before an eaiser?

]
},
{
"slug": "sublist",
Copy link
Member Author

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?

Copy link
Contributor

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.

@petertseng
Copy link
Member Author

petertseng commented Oct 19, 2016

Increase difficulty of our robot-name (edited into PR desc). We use IO monad, and #193 (comment) indicates there is difficulty jump.

@petertseng
Copy link
Member Author

petertseng commented Oct 19, 2016

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.

@rbasso
Copy link
Contributor

rbasso commented Oct 19, 2016

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! 😄

@petertseng
Copy link
Member Author

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.

@rbasso
Copy link
Contributor

rbasso commented Oct 19, 2016

Even if we decide not to order by difficulty, we can do it later.
There is really not reason to preserve the current order, because it is not good at all.

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",
Copy link
Member Author

@petertseng petertseng Oct 19, 2016

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.

Copy link
Contributor

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",
Copy link
Member Author

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.

Copy link
Contributor

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.

Copy link
Contributor

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.

Copy link
Member Author

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.

Copy link
Contributor

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",
Copy link
Member Author

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?

Copy link
Contributor

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.

Copy link
Member Author

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",
Copy link
Member Author

@petertseng petertseng Oct 19, 2016

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.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow your instincts! 😄 👍

Copy link
Member Author

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.

@petertseng
Copy link
Member Author

The only reason I can think to avoid reordering is if we intent to reorder everything again soon, so we two changes.

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",
Copy link
Member Author

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...

Copy link
Contributor

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.

Copy link
Member Author

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",
Copy link
Member Author

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.

Copy link
Contributor

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.

@petertseng
Copy link
Member Author

Okay, I'm done with this round of changes.

Copy link
Contributor

@rbasso rbasso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks perfect! 👍

Merging...

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants