Created
October 2, 2023 15:03
-
-
Save zorn/74415694132452632a955cbc5dddacfa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// @ts-check | |
// | |
// ☝🏽 The line above enables type checking for this file. Various IDEs interpret | |
// the @ts-check directive. It will give you helpful autocompletion on the web | |
// and supported IDEs when implementing this exercise. You don't need to | |
// understand types, JSDoc, or TypeScript in order to complete this JavaScript | |
// exercise, and can completely ignore this comment block and directive. | |
// 👋🏽 Hi there! | |
// | |
// On the JavaScript track we provide you with stubs. These stubs provide a | |
// starting point to solving the exercise. | |
// | |
// In general, each variable/constant and each declared function will have a | |
// JSDoc comment block above it, explaining what the variable/constant holds or | |
// the function is supposed to accomplish. | |
// | |
// 💡 Often, the JSDoc comment blocks have annotations, such as @param and | |
// @returns which are usually highlighted with a different color if the IDE | |
// you're in recognizes them. It's these annotations that are used when | |
// referring to the constant, variable, or function from somewhere else that | |
// IDEs display. | |
// | |
// You don't need to write these yourself; it is not expected in idiomatic | |
// JavaScript, but some companies and style-guides do enforce them. | |
// | |
// 💡 You're allowed to completely clear a stub before you get started. Often | |
// we recommend using the stub, because they are already set-up correctly to | |
// work with the tests, which you can find in ./lasagna.spec.js | |
// | |
// Good luck preparing some lasagna! | |
export const EXPECTED_MINUTES_IN_OVEN = 40; | |
/** | |
* The number of minutes it takes to prepare a single layer. | |
*/ | |
const PREPARATION_MINUTES_PER_LAYER = 2; | |
/** | |
* Determines the number of minutes the lasagna still needs to remain in the | |
* oven to be properly prepared. | |
* | |
* @param {number} actualMinutesInOven | |
* @returns {number} the number of minutes remaining | |
*/ | |
export function remainingMinutesInOven(actualMinutesInOven) { | |
return EXPECTED_MINUTES_IN_OVEN - actualMinutesInOven; | |
} | |
/** | |
* Given a number of layers, determines the total preparation time. | |
* | |
* @param {number} numberOfLayers | |
* @returns {number} the total preparation time | |
*/ | |
export function preparationTimeInMinutes(numberOfLayers) { | |
return numberOfLayers * PREPARATION_MINUTES_PER_LAYER; | |
} | |
/** | |
* Calculates the total working time. That is, the time to prepare all the layers | |
* of lasagna, and the time already spent in the oven. | |
* | |
* @param {number} numberOfLayers | |
* @param {number} actualMinutesInOven | |
* @returns {number} the total working time | |
*/ | |
export function totalTimeInMinutes(numberOfLayers, actualMinutesInOven) { | |
return preparationTimeInMinutes(numberOfLayers) + actualMinutesInOven; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment