From a82c868b2118e1fd58c0ae399a831f06ea1e491c Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 Oct 2025 11:36:31 +0530 Subject: [PATCH 1/3] added basic-prefix-sum code --- .../Array/test/BasicPrefixSum.test.js | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Data-Structures/Array/test/BasicPrefixSum.test.js diff --git a/Data-Structures/Array/test/BasicPrefixSum.test.js b/Data-Structures/Array/test/BasicPrefixSum.test.js new file mode 100644 index 0000000000..06929a8a6e --- /dev/null +++ b/Data-Structures/Array/test/BasicPrefixSum.test.js @@ -0,0 +1,20 @@ +import { describe, it, expect } from "vitest"; +import { basicPrefixSum } from "../BasicPrefixSum.js"; + +describe("basicPrefixSum", () => { + it("computes prefix sums correctly", () => { + expect(basicPrefixSum([1, 2, 3, 4])).toEqual([1, 3, 6, 10]); + }); + + it("returns an empty array for empty input", () => { + expect(basicPrefixSum([])).toEqual([]); + }); + + it("throws an error if input is not an array", () => { + expect(() => basicPrefixSum("abc")).toThrow(TypeError); + }); + + it("throws an error if array contains non-numeric elements", () => { + expect(() => basicPrefixSum([1, "2", 3])).toThrow(TypeError); + }); +}); \ No newline at end of file From bec2ff0066982385174618585bc141d1ad32ce78 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 Oct 2025 11:37:47 +0530 Subject: [PATCH 2/3] feat: add basic prefix sum implementation with tests --- Data-Structures/Array/BasicPrefixSum.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Data-Structures/Array/BasicPrefixSum.js diff --git a/Data-Structures/Array/BasicPrefixSum.js b/Data-Structures/Array/BasicPrefixSum.js new file mode 100644 index 0000000000..5184d78809 --- /dev/null +++ b/Data-Structures/Array/BasicPrefixSum.js @@ -0,0 +1,24 @@ +/** + * Computes prefix sums for a numeric array. + * Example: [2, 3, 5] → [2, 5, 10] + * @param {number[]} arr + * @returns {number[]} Prefix sum array + * @throws {TypeError} if input is not a numeric array + */ +export const basicPrefixSum = (arr) => { + if (!Array.isArray(arr)) { + throw new TypeError("Input must be an array"); + } + + if (!arr.every((item) => typeof item === "number")) { + throw new TypeError("All elements must be numbers"); + } + + const prefix = []; + let sum = 0; + for (const num of arr) { + sum += num; + prefix.push(sum); + } + return prefix; +}; From 1051fd285bfebac29e0c97581c1ee4fd2871f5ff Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 Oct 2025 11:46:03 +0530 Subject: [PATCH 3/3] added prefix sum code and fix prettier --- Data-Structures/Array/BasicPrefixSum.js | 18 +++++------ .../Array/test/BasicPrefixSum.test.js | 32 +++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Data-Structures/Array/BasicPrefixSum.js b/Data-Structures/Array/BasicPrefixSum.js index 5184d78809..4679c6734a 100644 --- a/Data-Structures/Array/BasicPrefixSum.js +++ b/Data-Structures/Array/BasicPrefixSum.js @@ -7,18 +7,18 @@ */ export const basicPrefixSum = (arr) => { if (!Array.isArray(arr)) { - throw new TypeError("Input must be an array"); + throw new TypeError('Input must be an array') } - if (!arr.every((item) => typeof item === "number")) { - throw new TypeError("All elements must be numbers"); + if (!arr.every((item) => typeof item === 'number')) { + throw new TypeError('All elements must be numbers') } - const prefix = []; - let sum = 0; + const prefix = [] + let sum = 0 for (const num of arr) { - sum += num; - prefix.push(sum); + sum += num + prefix.push(sum) } - return prefix; -}; + return prefix +} diff --git a/Data-Structures/Array/test/BasicPrefixSum.test.js b/Data-Structures/Array/test/BasicPrefixSum.test.js index 06929a8a6e..9042aa05b0 100644 --- a/Data-Structures/Array/test/BasicPrefixSum.test.js +++ b/Data-Structures/Array/test/BasicPrefixSum.test.js @@ -1,20 +1,20 @@ -import { describe, it, expect } from "vitest"; -import { basicPrefixSum } from "../BasicPrefixSum.js"; +import { describe, it, expect } from 'vitest' +import { basicPrefixSum } from '../BasicPrefixSum.js' -describe("basicPrefixSum", () => { - it("computes prefix sums correctly", () => { - expect(basicPrefixSum([1, 2, 3, 4])).toEqual([1, 3, 6, 10]); - }); +describe('basicPrefixSum', () => { + it('computes prefix sums correctly', () => { + expect(basicPrefixSum([1, 2, 3, 4])).toEqual([1, 3, 6, 10]) + }) - it("returns an empty array for empty input", () => { - expect(basicPrefixSum([])).toEqual([]); - }); + it('returns an empty array for empty input', () => { + expect(basicPrefixSum([])).toEqual([]) + }) - it("throws an error if input is not an array", () => { - expect(() => basicPrefixSum("abc")).toThrow(TypeError); - }); + it('throws an error if input is not an array', () => { + expect(() => basicPrefixSum('abc')).toThrow(TypeError) + }) - it("throws an error if array contains non-numeric elements", () => { - expect(() => basicPrefixSum([1, "2", 3])).toThrow(TypeError); - }); -}); \ No newline at end of file + it('throws an error if array contains non-numeric elements', () => { + expect(() => basicPrefixSum([1, '2', 3])).toThrow(TypeError) + }) +})