georgiev955

plant discovery

Jul 24th, 2023
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function plantDiscovery(input){
  2.     let plantsObj = {};
  3.     let discoveredPlants = Number(input.shift());
  4.     for(let i = 0; i < discoveredPlants; i++) {
  5.         let [plant, rarity] = input[i].split('<->');
  6.         if(!plantsObj.hasOwnProperty(plant)) {
  7.             plantsObj[plant] = {
  8.                 rarity: 0,
  9.                 rating: [],
  10.             }
  11.         }
  12.         plantsObj[plant].rarity += Number(rarity);
  13.     }
  14.     let index = discoveredPlants;
  15.     while(input[index] !== 'Exhibition') {
  16.         let [action, ...data] = input[index].split(': ');
  17.         switch (action) {
  18.             case 'Rate':
  19.                 let [plant, rating] = data[0].split(' - ');
  20.                 if(plantsObj.hasOwnProperty(plant)) {
  21.                     plantsObj[plant].rating.push(Number(rating));
  22.                 } else {
  23.                     console.log("error");
  24.                 }
  25.                 break;
  26.             case 'Update':
  27.                 let [plantName, newRarity] = data[0].split(' - ');
  28.                 if(plantsObj.hasOwnProperty(plantName)) {
  29.                     plantsObj[plantName].rarity = Number(newRarity);
  30.                 } else {
  31.                     console.log("error");
  32.                 }
  33.                 break;
  34.             case 'Reset':
  35.                 let plantToReset = data[0];
  36.                 if(plantsObj.hasOwnProperty(plantToReset)) {
  37.                     plantsObj[plantToReset].rating = [];
  38.                 } else {
  39.                     console.log("error");
  40.                 }
  41.                 break;
  42.         }
  43.         index++;
  44.     }
  45.     console.log("Plants for the exhibition:");
  46.     for(let key in plantsObj) {
  47.         let totalGrades = plantsObj[key].rating.length;
  48.         let average = 0;
  49.         if(totalGrades !== 0) {
  50.             plantsObj[key].rating = plantsObj[key].rating.reduce((a,b) => a+b);
  51.             average = plantsObj[key].rating/totalGrades;
  52.         }
  53.         console.log(`- ${key}; Rarity: ${plantsObj[key].rarity}; Rating: ${average.toFixed(2)}`);
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment