Just as a counterpoint, this is not “low level algorithmic logic”. This challenge in particular is simply asking the learner to demonstrate knowlege of a. push
and shift
and b. how to encapsulate this in a function.
And this applies to all of the algorithm challenges on FCC. There is an optional interview prep section which does ask learners to write implementations of common low-level algorithms & data structures, but the non-optional algorithms section is in no way low level. Out of necessity, they are isolated and simplified problems, so in that sense they are not reflective of complete real-life systems, but they are definitely not unlike day-to-day programming problems.
Most of the problems do not involve things that have been encapsulated in the language/framework – they are asking for the learner to use the tools available in the language to solve a problem, to apply the knowledge that the course is trying to impart, and they generally place no constraints on how the problems should be solved as long as it just using JavaScript.
Concepts such as design patterns are very useful for some types of programming (though often not massively useful for many contemporary usecases for JS which don’t involve the type of OO problems they are there to solve), but learners still need to learn to actually use the tools – just describing some syntax is not useful.
This is not to say that they can’t be improved, or that there are flaws, or that instructions cannot be improved or whatever. But don’t say that they’re unreflective of real-life programming, which is mostly made up of dividing problems down into units that are kinda the size of one of these algorithm problems, solving those small problems, then joining them back up.