curriculum/challenges/english/blocks/daily-coding-challenges-javascript/697a49e6ff50d756c9b69365.md
Given a string representing the curves on a skeleton track, determine the difficulty of the track.
The given string will only consist of the letters:
"L" for a left turn"R" for a right turn"S" for a straight segmentEach direction change adds 15 points (an "L" followed by an "R" or vice versa).
All other curves add 5 points each (all other "L" or "R" characters).
Straight segments add 0 points.
The difficulty of the track is based on the total score. Return:
"Easy" if the total is 0 - 100"Medium" if the total is 101-200"Hard" if the total is over 200getDifficulty("SLSLLSRRLSRLRL") should return "Easy".
assert.equal(getDifficulty("SLSLLSRRLSRLRL"), "Easy");
getDifficulty("LLRSLRLRSLLRLRSLRRLRSRLLS") should return "Hard".
assert.equal(getDifficulty("LLRSLRLRSLLRLRSLRRLRSRLLS"), "Hard");
getDifficulty("SRRRRLSLLRLRSSRLSRL") should return "Medium".
assert.equal(getDifficulty("SRRRRLSLLRLRSSRLSRL"), "Medium");
getDifficulty("LSRLRLSRLRLSLRSLRLLRLSRLRLRSL") should return "Hard".
assert.equal(getDifficulty("LSRLRLSRLRLSLRSLRLLRLSRLRLRSL"), "Hard");
getDifficulty("SLLSSLRLSLSLRSLSSLRL") should return "Medium".
assert.equal(getDifficulty("SLLSSLRLSLSLRSLSSLRL"), "Medium");
getDifficulty("SRSLSRSLSRRSLSRSRSLSRLSRSR") should return "Easy".
assert.equal(getDifficulty("SRSLSRSLSRRSLSRSRSLSRLSRSR"), "Easy");
function getDifficulty(track) {
return track;
}
function getDifficulty(track) {
let score = 0;
for (let i = 0; i < track.length; i++) {
const current = track[i];
const previous = i > 0 ? track[i - 1] : null;
if (current === 'S') {
score += 0;
} else if (current === 'L' || current === 'R') {
if (previous && previous !== 'S' && previous !== current) {
score += 15;
} else if (previous !== 'S') {
score += 5;
} else {
score += 5;
}
}
}
if (score <= 100) return 'Easy';
if (score <= 200) return 'Medium';
return 'Hard';
}