From 1076fa6034a77647af40bf2464b16b93895912cb Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 24 Mar 2021 21:32:11 +0100 Subject: [PATCH 1/3] Ajout doc --- jour12/jour12.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/jour12/jour12.js b/jour12/jour12.js index d95c749..be8c429 100644 --- a/jour12/jour12.js +++ b/jour12/jour12.js @@ -4,19 +4,26 @@ const data = JSON.parse(file); try { console.log("Traitement de la première partie…"); - console.log("La somme totate est " + parseJsonPrem(data)); + console.log("La somme totale est " + parseJsonPrem(data)); } catch(err) { console.log("Une erreur a été rencontrée !"); console.error(err); } +/** + * Fonction additionnant tous les nombres contenus dans un objet + * de type Array ou JSON. + * + * @param Object obj - Object où se trouve des nombres + * @return int la somme totale + */ function parseJsonPrem(obj) { let ret = 0; let value; for (const index in obj) { value = obj[index]; - if (value instanceof Object) { + if (value instanceof Object) { // car Array est un Object ret += parseJsonPrem(value); } else if (Number.isInteger(value)) { ret += value; From 183df528f1ba708dfd5825995537f3f089ab63ba Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 24 Mar 2021 21:33:49 +0100 Subject: [PATCH 2/3] Lecture du fichier dans try --- jour12/jour12.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jour12/jour12.js b/jour12/jour12.js index be8c429..d1b56f6 100644 --- a/jour12/jour12.js +++ b/jour12/jour12.js @@ -1,8 +1,8 @@ const fs = require('fs'); -const file = fs.readFileSync("input", "utf8"); -const data = JSON.parse(file); try { + const file = fs.readFileSync("input", "utf8"); + const data = JSON.parse(file); console.log("Traitement de la première partie…"); console.log("La somme totale est " + parseJsonPrem(data)); } catch(err) { From 448ca0d0fe446bb868d6f6c72c4f7760d3b0e018 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 24 Mar 2021 21:45:51 +0100 Subject: [PATCH 3/3] =?UTF-8?q?Ajout=20deuxi=C3=A8me=20partie=20et=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jour12/jour12.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/jour12/jour12.js b/jour12/jour12.js index d1b56f6..7f013c4 100644 --- a/jour12/jour12.js +++ b/jour12/jour12.js @@ -5,6 +5,8 @@ try { const data = JSON.parse(file); console.log("Traitement de la première partie…"); console.log("La somme totale est " + parseJsonPrem(data)); + console.log("Traitement de la deuxième partie…"); + console.log("La somme totale est " + parseJsonDeux(data)); } catch(err) { console.log("Une erreur a été rencontrée !"); console.error(err); @@ -32,21 +34,31 @@ function parseJsonPrem(obj) { return ret; } -/* -function parseObject(objet) { +/** + * Fonction additionnant tous les nombres contenus dans un objet + * sauf ceux qui ont une propriété "red". Règle ne s’appliquant pas + * aux Array (toujours une addition complète) + * + * @param Object obj - Object où se trouve des nombres + * @return int la somme totale + */ +function parseJsonDeux(obj) { let ret = 0; let value; + // c’est plus jolie d’avoir une variable dédiée plutot que bourrer le if + let isObj = !(obj instanceof Array) && obj instanceof Object; + for (const index in obj) { value = obj[index]; - if (value instanceof Array) { - ret += parseArray(value); - } else if (value instanceof Object) { - ret += parseObject(value); + if (value instanceof Object) { + ret += parseJsonDeux(value); } else if (Number.isInteger(value)) { ret += value; + } else if (isObj && value === "red") { + ret = 0; + break; } } return ret; } -*/