From 223b41abfca6e58cb46e3d616802239fd1c5f3ad Mon Sep 17 00:00:00 2001 From: patrickwestervelt Date: Sat, 15 Oct 2022 13:20:53 -0400 Subject: [PATCH] Feat: Added FindMin --- Maths/FindMin.ts | 25 +++++++++++++++++++++++++ Maths/test/FindMin.test.ts | 16 ++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 Maths/FindMin.ts create mode 100644 Maths/test/FindMin.test.ts diff --git a/Maths/FindMin.ts b/Maths/FindMin.ts new file mode 100644 index 00000000..502a79e3 --- /dev/null +++ b/Maths/FindMin.ts @@ -0,0 +1,25 @@ +/** + * @function FindMin + * @description Find the minimum in an array of numbers. + * @param {Number[]} nums - An array of numbers. + * @return {Number} - The minimum. + * @see https://infinitbility.com/how-to-find-minimum-value-in-array-in-typescript/ + * @example FindMin([1,2,3,4,5]) = 1 + * @example FindMin([87,6,13,999]) = 6 + * @example FindMin([0.8,0.2,0.3,0.5]) = 0.2 + * @example FindMin([1,0.1,-1]) = -1 + */ + export const FindMin = (nums: number[]): number => { + if (nums.length === 0) { + throw new Error("array must have length of 1 or greater"); + } + + let minimumSeen: number = nums[0]; + for (const num of nums) { + if (num < minimumSeen) { + minimumSeen = num; + } + } + + return minimumSeen; + }; \ No newline at end of file diff --git a/Maths/test/FindMin.test.ts b/Maths/test/FindMin.test.ts new file mode 100644 index 00000000..8049e954 --- /dev/null +++ b/Maths/test/FindMin.test.ts @@ -0,0 +1,16 @@ +import { FindMin } from "../FindMin"; + +describe("FindMin", () => { + test.each([[[1,2,3,4,5,6], 1], [[87,6,13,999], 6], [[0.8,0.2,0.3,0.5], 0.2], [[1,0.1,-1], -1]])( + "of this array should be %i", + (nums, expected) => { + expect(FindMin(nums)).toBe(expected); + }, + ); + + test("of arrays with length 0 should error", () => { + expect(() => FindMin([])).toThrowError( + "array must have length of 1 or greater", + ); + }); +}); \ No newline at end of file