nim icon indicating copy to clipboard operation
nim copied to clipboard

Update the track structure

Open ee7 opened this issue 6 years ago • 0 comments

For simplicity, new exercises are being implemented as bonus exercises, meaning that unlocked_by is set to null in config.json.

Therefore after the new exercises are merged, we should probably consider:

  1. Changing the core exercises (to include some of the current bonus exercises, or some of the new exercises).
  2. Turning the remaining bonus exercises into side exercises.
  3. Tweaking the exercise order.
  4. Tweaking the difficulty ratings.
  5. Changing config.json to follow this proposed ordering, which may become part of configlet in the future. This should help reduce diff noise when reordering exercises later.
  6. Changing the topics be more useful and specific to Nim.

I don't currently have strong opinions on the track structure, but other tracks have put significant thought into it. We should consider (or steal) their ideas, at least as a starting point. I'll write some suggestions later. Let me know if you have any thoughts.

Some recent work by other tracks:

Regarding difficulty: most of our currently implemented exercises are relatively easy. Some tracks use a restricted set of ratings (such as: 1, 4, 7 and 10). If we do this, I think nearly all our our current exercises should be difficulty 1 so that we can have a clear difference later between easy and medium difficulty.

It's also easier to implement good solutions in Nim than in many languages.

Current Nim track structure

configlet tree config.json --with-difficulty

core
----
├─ hello-world [1]
│  ├─ pangram [1]
│  └─ hamming [1]
│
├─ two-fer [1]
│  ├─ isogram [1]
│  └─ acronym [1]
│
├─ leap [1]
│  ├─ difference-of-squares [1]
│  └─ triangle [1]
│
├─ bob [1]
│  ├─ word-count [3]
│  ├─ anagram [1]
│  └─ bracket-push [1]
│
├─ allergies [1]
│
├─ sum-of-multiples [1]
│  ├─ armstrong-numbers [1]
│  ├─ grains [2]
│  ├─ collatz-conjecture [1]
│  └─ scrabble-score [1]
│
├─ grade-school [1]
│  └─ atbash-cipher [1]

bonus
-----
reverse-string [1]
rna-transcription [1]
gigasecond [1]
run-length-encoding [1]
roman-numerals [1]
space-age [1]
nth-prime [1]
queen-attack [1]
all-your-base [1]
nucleotide-count [1]
raindrops [1]
react [8]
darts [1]
secret-handshake [1]

ee7 avatar Mar 06 '19 23:03 ee7