Skip to content
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

Update the track structure #181

Open
ee7 opened this issue Mar 6, 2019 · 0 comments
Open

Update the track structure #181

ee7 opened this issue Mar 6, 2019 · 0 comments

Comments

@ee7
Copy link
Member

ee7 commented Mar 6, 2019

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

No branches or pull requests

1 participant