From 1ea65129b689d1d09a5d63db960e888588856f5a Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Fri, 21 Nov 2025 12:27:32 -0800 Subject: [PATCH] feat: today's fcc challenge --- .../daily/2025-11-21/main.spec.ts | 18 +++++++++++++++++ src/freecodecamp/daily/2025-11-21/main.ts | 20 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/freecodecamp/daily/2025-11-21/main.spec.ts create mode 100644 src/freecodecamp/daily/2025-11-21/main.ts diff --git a/src/freecodecamp/daily/2025-11-21/main.spec.ts b/src/freecodecamp/daily/2025-11-21/main.spec.ts new file mode 100644 index 0000000..f483806 --- /dev/null +++ b/src/freecodecamp/daily/2025-11-21/main.spec.ts @@ -0,0 +1,18 @@ +/** + * @copyright NHCarrigan + * @license Naomi's Public License + * @author Naomi Carrigan + */ + +import { describe, it, expect } from "vitest"; +import { lcm } from "./main.js"; + +describe("lcm", () => { + it("should return the correct LCM", () => { + expect(lcm(4, 6)).toBe(12); + expect(lcm(9, 6)).toBe(18); + expect(lcm(10, 100)).toBe(100); + expect(lcm(13, 17)).toBe(221); + expect(lcm(45, 70)).toBe(630); + }); +}); \ No newline at end of file diff --git a/src/freecodecamp/daily/2025-11-21/main.ts b/src/freecodecamp/daily/2025-11-21/main.ts new file mode 100644 index 0000000..05ec846 --- /dev/null +++ b/src/freecodecamp/daily/2025-11-21/main.ts @@ -0,0 +1,20 @@ +/** + * @copyright NHCarrigan + * @license Naomi's Public License + * @author Naomi Carrigan + */ + +const gcd = (firstNumber: number, secondNumber: number): number => { + return secondNumber === 0 ? firstNumber : gcd(secondNumber, firstNumber % secondNumber); +}; + +/** + * Given two integers, return the least common multiple (LCM) of the two numbers. + * @param firstNumber - The first integer. + * @param secondNumber - The second integer. + * @returns The least common multiple (LCM) of the two numbers. + * @see https://www.freecodecamp.org/learn/daily-coding-challenge/2025-11-21 + */ +export const lcm = (firstNumber: number, secondNumber: number): number => { + return (firstNumber * secondNumber) / gcd(firstNumber, secondNumber); +}