Skip to content

Update the track structure #181

@ee7

Description

@ee7

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]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions