cpp
cpp copied to clipboard
Improve rating of difficulty
config.json assigns a "difficulty" to each exercise. Here they are:
1
hello-world
leap
luhn
space-age
two-fer
2
collatz-conjecture
gigasecond
grains
pangram
raindrops
reverse-string
secret-handshake
3
acronym
allergies
armstrong-numbers
atbash-cipher
binary
difference-of-squares
etl
grade-school
hamming
hexadecimal
isogram
matching-brackets
nucleotide-count
pascals-triangle
protein-translation
rna-transcription
scrabble-score
sum-of-multiples
triangle
trinary
4
all-your-base
binary-search
robot-simulator
5
anagram
bob
clock
meetup
nth-prime
phone-number
prime-factors
queen-attack
robot-name
series
sieve
word-count
6
circular-buffer
complex-numbers
7
beer-song
crypto-square
food-chain
roman-numerals
10
binary-search-tree
say
IMHO some of those ratings are wildly off, e.g.:
- luhn is definitely more difficult than hello-world, leap, or two-fer
- I've mentored space-age several hundred times. Many students struggle with that exercise because they member functions have to be const-qualified and they have to choose a type that can represent the age in seconds for all tests.
- pangram and isogram are very similar, IMHO they are equally difficult.
(The only thing that makes isogram a little bit tricky is that the description doesn't restrict the characters to ASCII so one has to be careful not to call
std::isalpha()
orstd::tolower()
with achar
.) - Are beer-song and food-chain really that complicated? (Frankly, I never understood the appeal of those exercises.)
I'm sure you can easily spot some more discrepancies.
And a more general question: Are the difficulties rated in comparison to each other or do those ratings have some meaning (e.g. 1=for beginners who just wrote their first hello-world, 4=for those who feel comfortable writing classes and functions, 7=complex tasks with multiple requirements)?
The difficulties were set by me, a long time ago, to make sure we were up to date with a new config.json specification: https://github.com/exercism/cpp/commit/9ba292666f4fbee4f65491347b286a66385324d2
The reason for the ratings is purely because I made some guesses 5 years ago, and there have not really been discussions about it since AFAIK. I tried to keep the difficulties in relation to each other, but I don't think I had even written solutions to them myself.
Now that the website is showing different levels of difficulty, it may be a good idea to just bucket them into the same easy
medium
hard
that the website does? I don't know if there's any benefit to giving other ratings. - https://github.com/exercism/docs/blob/main/building/tracks/config-json.md#practice-exercises