Voila ma solution au challenge et au défis caché !
/**
*
* @author ~ Joss Coupet ~
* @contact ~ contact@joss-coupet.eu ~
* @website ~ www.joss-coupet.eu ~
*
* @description Le défi caché est de savoir combien de farine,
* d'oeuf, de lait, de beurre et de sucre sont nécessaires pour
* recouvrir la lune d'une crèpe et d'en faire un fief breton.
* Movai donne le prototype d'une fonction et c'est à nous de la définir
* de la pire des manières.
* @language ~ JavaScript ~
*
*/
const EGG_FOR_ONE_CREPE = 0.25;
const FLOUR_FOR_ONE_CREPE = 20;
const BUTTER_FOR_ONE_CREPE = 3.5;
const MILK_FOR_ONE_CREPE = 4;
const SUGAR_FOR_ONE_CREPE = 0.25;
const SURFACE_LUNE = 37_871_220_000_000 // m2
// cette fonction calcule le nombre maximum d'oeufs
const calculLeNombreMaximumeDOeufs = (nombre_d_oeuf) => {
return Math.floor(nombre_d_oeuf / EGG_FOR_ONE_CREPE);
}
// cette fonction calcule le nombre maximum de farine
const calculLeNombreMaximumeDeFarine = (farine_en_gramme) => {
return Math.floor(farine_en_gramme / FLOUR_FOR_ONE_CREPE);
}
// cette fonction calcule le nombre maximum de beurre
const calculLeNombreMaximumeDeBeurre = (beurre_en_gramme) => {
return Math.floor(beurre_en_gramme / BUTTER_FOR_ONE_CREPE);
}
// cette fonction calcule le nombre maximum de lait
const calculLeNombreMaximumeDeLait = (lait_en_centilitres) => {
return Math.floor(lait_en_centilitres / MILK_FOR_ONE_CREPE);
}
const calculLeNombreMaximumeDeSucre = (sucre_en_gramme) => {
return Math.floor(sucre_en_gramme / SUGAR_FOR_ONE_CREPE);
}
// cette fonction calcule la surface d'une crèpe
const calculSurfaceCrepe = ({ oeuf, farine, beurre, lait, sucre }, unit = "m2") => {
let nombreMaximumDeOeuf = calculLeNombreMaximumeDOeufs(oeuf);
let nombreMaximumDeFarine = calculLeNombreMaximumeDeFarine(farine);
let nombreMaximumDeBeurre = calculLeNombreMaximumeDeBeurre(beurre);
let nombreMaximumDeLait = calculLeNombreMaximumeDeLait(lait);
let nombreMaximumDeMorceauDeSucre = calculLeNombreMaximumeDeSucre(sucre);
// nombre maximum de crèpes avec les ingrédients donnés dans les paramètres de la fonction
let nombreMaximumDeCrepeAvecLesIngredientsDonnesDansLesParametresDeLaFonction = Math.min(nombreMaximumDeOeuf, nombreMaximumDeFarine, nombreMaximumDeBeurre, nombreMaximumDeLait, nombreMaximumDeMorceauDeSucre);
if (unit === "cm2") {
let surface = nombreMaximumDeCrepeAvecLesIngredientsDonnesDansLesParametresDeLaFonction * 572 // cm2
return surface;
} else if (unit === "km2") {
let surface = nombreMaximumDeCrepeAvecLesIngredientsDonnesDansLesParametresDeLaFonction * 0.0000000572 // km2
return surface;
} else {
let surface = nombreMaximumDeCrepeAvecLesIngredientsDonnesDansLesParametresDeLaFonction * 0.0572 // m2
return surface;
}
}
// oui, ce nom de fonction est horrible
const avoirLesIngredientsNecessairePourRecouvrirLaLune = () => {
let surface_d_une_crepe = calculSurfaceCrepe({ oeuf: EGG_FOR_ONE_CREPE, farine: FLOUR_FOR_ONE_CREPE, beurre: BUTTER_FOR_ONE_CREPE, lait: MILK_FOR_ONE_CREPE, sucre: SUGAR_FOR_ONE_CREPE }, "m2");
let nombre_de_crepe = Math.ceil(SURFACE_LUNE / surface_d_une_crepe);
let nombre_d_oeuf = Math.ceil(nombre_de_crepe * EGG_FOR_ONE_CREPE);
let nombre_de_farine = Math.ceil(nombre_de_crepe * FLOUR_FOR_ONE_CREPE);
let nombre_de_beurre = Math.ceil(nombre_de_crepe * BUTTER_FOR_ONE_CREPE);
let nombre_de_lait = Math.ceil(nombre_de_crepe * MILK_FOR_ONE_CREPE);
let nombre_de_sucre = Math.ceil(nombre_de_crepe * SUGAR_FOR_ONE_CREPE);
return {
nombre_de_crepe,
nombre_d_oeuf,
nombre_de_farine,
nombre_de_beurre,
nombre_de_lait,
nombre_de_sucre
}
}
const main = () => {
let {
nombre_de_crepe, // nombre de crèpes
nombre_d_oeuf, // nombre d'oeufs
nombre_de_farine, // nombre de farine
nombre_de_beurre, // nombre de beurre
nombre_de_lait, // nombre de lait
nombre_de_sucre // nombre de sucre
} = avoirLesIngredientsNecessairePourRecouvrirLaLune();
console.log(`Pour recouvrir la lune d'une crèpe il faut l'équivalent de ${nombre_de_crepe} crèpes, soit :`);
console.log(`- ${Math.ceil(nombre_d_oeuf)} oeufs`);
console.log(`- ${nombre_de_farine} g de farine`);
console.log(`- ${nombre_de_beurre} g de beurre`);
console.log(`- ${nombre_de_lait} cl de lait`);
console.log(`- ${nombre_de_sucre} g de sucre`);
let surface_en_km2 = calculSurfaceCrepe({ oeuf: nombre_d_oeuf, farine: nombre_de_farine, beurre: nombre_de_beurre, lait: nombre_de_lait, sucre: nombre_de_sucre }, "km2");
let surface_en_m2 = calculSurfaceCrepe({ oeuf: nombre_d_oeuf, farine: nombre_de_farine, beurre: nombre_de_beurre, lait: nombre_de_lait, sucre: nombre_de_sucre }, "m2");
let surface_en_cm2 = calculSurfaceCrepe({ oeuf: nombre_d_oeuf, farine: nombre_de_farine, beurre: nombre_de_beurre, lait: nombre_de_lait, sucre: nombre_de_sucre }, "cm2");
console.log(`La surface de la lune recouverte par les crèpes est de ${surface_en_km2} km2, soit ${surface_en_m2} m2, soit ${surface_en_cm2} cm2`);
console.log(`Cela représenterai une crepe de ${nombre_de_crepe * 27}cm de diamètre`);
}
main();
Voila ma solution au challenge et au défis caché !