Add new practice exercises

Whilst adding practice exercises to a couple of tracks, it struck me that we haven’t really added many new exercises to the prob-specs repo lately. I think this is a shame as new exercises make exercism stay “fresh.” We also have some subjects that seem to be lacking practice exercises, e.g. there are very few date-related practice exercises. My goal is to remedy this, hopefully doing this together :slight_smile:

Here are the subjects that I feel are lacking practice exercises:

  • Bitwise operations (I’d love for one where you’d get to use an XOR)
  • Dates/time/timezones (maybe also calendars?)
  • Multi-dimensional arrays
  • Randomness
  • Parallellism
  • Domain-driven design (something a bit more “hefty” where you’d be defining a couple of classes/modules to build up a solution)

And some subjects that I feel would make for cool practice exercises:

  • Shortest path (Dijkstra/A*)
  • Build tiny language (lexing and/or parsing and/or interpreting, possibly three exercises that build on each other like the resistor-color series)
  • Huffman Encoding
  • Genetic algorithm

As a PoC, I’ve created a new date exercise, which you can find as draft PR: Add `swift-scheduling` exercise by ErikSchierboom · Pull Request #2397 · exercism/csharp · GitHub I’m hoping to get a couple of people joining me in building these exercises, as that way we should be able to churn a couple out fairly quickly. Is anyone interested in helping?

I’d also like a performance optimization exercise, which would basically be a refactoring exercise.

Given that i have a lot of things in my TODO list, most of them requiring a lot of time, i can only help with reviewing the docs.

1 Like

For bitwise operations, my first thought was perhaps an exercise on error detection and then correction. We could start with the simple parity bit for error detection and then follow up with Hamming code to include correction. Happy to try put together a PoC.

1 Like

For an XOR bitwise operations exercise, we may use NMEA GPS checksum calculation. Basically its “XOR all ASCII chars between $ and * and represent the result as ASCII hex digits”.

2 Likes

I like both XOR options! And I wouldn’t mind having multiple exercises, as long as they are different enough.

That would be lovely!

I had an idea to rip off (or make something similar to) Google’s Half Moon doodle game. Maybe it’ll fit in the multidimensional arrays.
Also, any docs/guidelines on proposing new exercise? I haven’t really done it before.

We don’t really have docs. Usually we have a little discussion on how to implement the exercise, but you could also create a PR and discuss it then (which could mean having done work that would be reverted/changed).

Here is an example of a new exercise PR: Add `swift-scheduling` exercise by ErikSchierboom · Pull Request #2536 · exercism/problem-specifications · GitHub

1 Like

I already posted on Discord, but this might have other people to check the idea of a royal dating app: feat: add pathfinding exercise by vaeng · Pull Request #2537 · exercism/problem-specifications · GitHub

4 Likes

Just created a draft PR for the parity bit PoC: Add intergalactic transmission exercise by kahgoh · Pull Request #2398 · exercism/csharp · GitHub

1 Like