Implement prototype(values, queries) and solve(values, queries). Each query is the array [left, right] and requests the sum of [left, right). Return Number results in query order. Negative values are valid and empty ranges return zero.

For values = [4, -2, 7] and queries = [[0, 3], [1, 3], [2, 2]], return [9, 5, 0]. Throw RangeError for any query not satisfying 0 <= left, left <= right, and right <= values.length.

Prototype: sum each range independently. Final: build one prefix table for O(n+q) time/O(n) auxiliary space. Preserve both inputs on success and failure.

All numeric inputs and finite arithmetic results in this lesson are safe-integer Numbers. Use null for documented absence, not undefined or a numeric sentinel. Return actual booleans where the contract requires them. Do not add validation requirements beyond the documented inputs.

Run with Node.js 20+ from this directory:

Shell
node main.mjs --stage prototype
node main.mjs --stage final

Edit exercise.mjs; keep main.mjs unchanged. Both stages begin as unfinished learner functions. The website uses the same test functions in a separate browser worker. Tests check deterministic examples, boundaries, documented validation, input preservation, and stage-specific cases. Passing tests does not prove the required time complexity.

Drag or use the arrow keys to resize. Home collapses the question; End collapses the editor. Enter or double-click resets the split.
Loading editor…
No results yet.

Complete the starter code, then run the checks.
Results and errors will appear here.