Liliana797979

viarno reshenie plant discovery - final exam

Aug 11th, 2021
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function plant(input) {
  2.     let actions = {
  3.         "Rate": rate,
  4.         "Update": update,
  5.         "Reset": reset
  6.     };
  7.     let catalog = {};
  8.     let n = Number(input.shift());
  9.     for (let i = 0; i < n; i++) {
  10.     let [name, rarity] = input.shift().split("<->");
  11.          
  12.          catalog[name] = {
  13.             rarity: Number(rarity),
  14.             ratings: [],
  15.             avgRating: 0
  16.          };
  17.     }
  18.        // console.log(catalog);
  19.     while (input[0] != "Exhibition") {
  20.         let [command, params] = input.shift().split(": ");
  21.         let action = actions[command];
  22.         action(params);
  23.     }
  24.         let sorted = Object.entries(catalog).sort(comparePlants);
  25.       // console.log(sorted);
  26.         //console.log('First element', sorted[0]);
  27.         //let firstElement = sorted[1];
  28.         //console.log('First element', firstElement);
  29.         //console.log(`First element key`, firstElement[0])
  30.         //console.log('First element value', firstElement[1]);
  31.         //console.log(firstElement[1].ratings);
  32.  
  33.         function comparePlants(a, b) {
  34.             let rarityA = a[1].rarity;
  35.             let rarityB = b[1].rarity;
  36.  
  37.             let ratingA = a[1].avgRating;
  38.             let ratingB = b[1].avgRating;
  39.  
  40.             return (rarityB - rarityA) || (ratingB - ratingA);
  41.         }
  42.  
  43.         console.log(`Plants for the exhibition:`);
  44.         for (let [name, plant] of sorted) {
  45.             console.log(`- ${name}; Rarity: ${plant.rarity}; Rating: ${plant.avgRating.toFixed(2)}`);
  46.         }
  47.        
  48.  
  49.         function rate(line) {
  50.             let [name, rating] = line.split(" - ");
  51.             if (catalog[name] != undefined) {
  52.                 let plant = catalog[name];
  53.                 plant.ratings.push(Number(rating));
  54.  
  55.                 let total = 0;
  56.                 for (let rating of plant.ratings) {
  57.                    total += rating;
  58.                 }
  59.                 plant.avgRating = total / plant.ratings.length;
  60.             } else {
  61.                 console.log("error");
  62.             }
  63.         }
  64.          function update (line) {
  65.             let [name, rarity] = line.split(" - ");
  66.             if (catalog[name] != undefined) {
  67.                 let plant = catalog[name];
  68.                 plant.rarity = Number(rarity);
  69.             } else {
  70.                 console.log(`error`);
  71.             }
  72.         }
  73.         function reset (name) {
  74.             if (catalog[name] != undefined) {
  75.                 let plant = catalog[name];
  76.                 plant.ratings.length = 0;
  77.                 plant.avgRating = 0;
  78.             } else {
  79.                 console.log("error");
  80.             }
  81.         }
  82.         line = input.shift();
  83.     }
  84.  
  85.  
  86.  
  87. plant(['3',
  88. 'Arnoldii<->4',
  89. 'Woodii<->7',
  90. 'Welwitschia<->2',
  91. 'Rate: Woodii - 10',
  92. 'Rate: Welwitschia - 7',
  93. 'Rate: Arnoldii - 3',
  94. 'Rate: Woodii - 5',
  95. 'Update: Woodii - 5',
  96. 'Reset: Arnoldii',
  97. 'Exhibition']);
Advertisement
Add Comment
Please, Sign In to add comment