feat: today's fcc challenge
Node.js CI / Lint and Test (push) Successful in 38s

This commit is contained in:
2025-11-22 15:24:31 -08:00
parent 8d9dd0f058
commit a12aef0c0b
2 changed files with 68 additions and 0 deletions
@@ -0,0 +1,48 @@
/**
* @copyright NHCarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import { describe, it, expect } from "vitest";
import { scaleRecipe } from "./main.js";
describe("scaleRecipe", () => {
it("should return the correct scaled recipe", () => {
expect(scaleRecipe([ "2 C Flour", "1.5 T Sugar" ], 2)).toStrictEqual([
"4 C Flour",
"3 T Sugar",
]);
expect(
scaleRecipe([ "4 T Flour", "1 C Milk", "2 T Oil" ], 1.5),
).toStrictEqual([ "6 T Flour", "1.5 C Milk", "3 T Oil" ]);
expect(scaleRecipe([ "3 C Milk", "2 C Oats" ], 0.5)).toStrictEqual([
"1.5 C Milk",
"1 C Oats",
]);
expect(
scaleRecipe(
[
"2 C All-purpose Flour",
"1 t Baking Soda",
"1 t Salt",
"1 C Butter",
"0.5 C Sugar",
"0.5 C Brown Sugar",
"1 t Vanilla Extract",
"2 C Chocolate Chips",
],
2.5,
),
).toStrictEqual([
"5 C All-purpose Flour",
"2.5 t Baking Soda",
"2.5 t Salt",
"2.5 C Butter",
"1.25 C Sugar",
"1.25 C Brown Sugar",
"2.5 t Vanilla Extract",
"5 C Chocolate Chips",
]);
});
});
+20
View File
@@ -0,0 +1,20 @@
/**
* @copyright NHCarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
/**
* Given an array of recipe ingredients and a number to scale the recipe, return an array with the quantities scaled accordingly.
* @param recipe - The recipe to scale.
* @param scale - The scale to apply to the recipe.
* @returns The scaled recipe.
* @see https://www.freecodecamp.org/learn/daily-coding-challenge/2025-11-22
*/
export const scaleRecipe
= (recipe: Array<string>, scale: number): Array<string> => {
return recipe.map((ingredient) => {
const [ quantity, ...unit ] = ingredient.split(" ");
return `${(Number(quantity) * scale).toString()} ${unit.join(" ")}`;
});
};