Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(inputArr) { //трябва да се провери в джъдж
- let plantsObj = {};
- let n = Number(inputArr.shift());
- for (let i = 0; i < inputArr.length; i++) {
- if (i < n) { //On the next n lines, you will be given some information about the plants that you have discovered in the format: "{plant}<->{rarity}"
- let tokens = inputArr[i].split("<->");
- let name = tokens[0];
- let rarity = Number(tokens[1]);
- if (plantsObj.hasOwnProperty(name)) { //ако има такова цвете с такова име в обекта с цветя - ъпдейтваме неговото rarity или if(plants[name]){}
- plantsObj[name].rarity = rarity;
- } else { //ако няма такова цвете - създаваме го
- plantsObj[name] = {
- rarity: rarity,
- ratings: [],
- avgRating: 0,
- }
- }
- } else { //After that until you receive the command "Exhibition" you will be given some of these commands:
- if (inputArr[i] == "Exhibition") {
- for (const plantName of Object.keys(plantsObj)) { //определяме средния рейтинг на всяко растение, обхождайки всички цветя
- if (plantsObj[plantName].ratings.length < 1) { //ако масива с рейтинги на текущото цвете е празен - средния рейтинг ще му е нула
- plantsObj[plantName].avgRating = 0;
- } else {
- plantsObj[plantName].avgRating = plantsObj[plantName].ratings.reduce((a, b) => a + b, 0) / plantsObj[plantName].ratings.length; //събираме всичките му рейтинги,чрез метода reduce() и ги делим на дължината на масива с рейтинги на цветето
- } //дригят вариант е просто с още един цикъл да се обходи масива с рейтинги, да се намери сбора им и да се раздели на дължината на масива, за да се намери средната стойност
- }
- //правим масив от ключовете/пропъртитата/т.е. имената на цветята и после по името ги намираме в обекта, за да сортираме масива по желаните стойности
- let plantsArr = Object.keys(plantsObj).sort((a, b) => plantsObj[b].rarity - plantsObj[a].rarity || plantsObj[b].avgRating - plantsObj[a].avgRating); //сортиране по низходящ ред първо по rarity, после по среден рейтинг
- console.log("Plants for the exhibition:");
- for (const name of plantsArr) { //обхождаме вече сортирания масив с имена на цветя и по името им викаме стойностите на желаните value-та в обекта с цветя
- console.log(`- ${name}; Rarity: ${plantsObj[name].rarity}; Rating: ${plantsObj[name].avgRating.toFixed(2)}`)
- }
- } else {
- let tokens = inputArr[i].split(": ");
- let command = tokens[0];
- let nameAndParam = tokens[1].split(" - ");
- let name = nameAndParam[0];
- if (plantsObj.hasOwnProperty(name)) { //ако има в обекта с цветя цвете с такова име(key)
- if (command == "Rate") {
- let rating = Number(nameAndParam[1]);
- plantsObj[name].ratings.push(rating);
- } else if (command == "Update") {
- let newRarity = Number(nameAndParam[1]);
- plantsObj[name].rarity = newRarity;
- } else if (command == "Reset") {
- plantsObj[name].ratings = [];
- } else { //значи командата не съществува
- console.log("error");
- }
- } else { //значи няма такова цвете
- console.log("error");
- }
- }
- }
- }
- }
- solve(["3", "Arnoldii<->4", "Woodii<->7", "Welwitschia<->2", "Rate: Woodii - 10", "Rate: Welwitschia - 7", "Rate: Arnoldii - 3", "Rate: Woodii - 5", "Update: Woodii - 5", "Reset: Arnoldii", "Exhibition"]);
- console.log();
- solve(["2", "Candelabra<->10", "Oahu<->10", "Rate: Oahu - 7", "Rate: Candelabra - 6", "Exhibition"]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement