Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function plant (input) {
- // Part 1: Fill plant collection
- let plantCount = Number(input.shift()) ;
- let collection = [] ;
- for (let c = 0 ; c < plantCount ; c++) {
- let output = input.shift().split('<->') ;
- let plant = {} ;
- plant.name = output[0] ;
- plant.rarity = Number(output[1]) ;
- plant.rating = 0 ;
- plant.votes = 0 ;
- let plantDetails = collection.find(x => x.name === output[0]) ;
- let plantIndex = collection.indexOf(plantDetails) ;
- if ( plantIndex === -1 ) {
- collection.push(plant) ;
- } else {
- collection[plantIndex].rarity = plant.rarity ;
- }
- }
- // Part 2: Rate/Update/Reset
- let instruction = input.shift() ;
- while (instruction !== 'Exhibition') {
- let output = instruction.split(' - ') ;
- let regex = /^(?<command>[A-Z][a-z]+)(: )(?<plant>[A-Z][a-z]+)/ ;
- let cmd = output[0].match(regex).groups['command'] ;
- let plant = output[0].match(regex).groups['plant'] ;
- let value = 0 ;
- if (cmd !== 'Reset') {
- value = Number(output[1]) ;
- }
- let plantDetails = collection.find(x => x.name === plant) ;
- let plantIndex = collection.indexOf(plantDetails) ;
- switch (cmd) {
- case 'Rate' : {
- collection[plantIndex].rating += value ;
- collection[plantIndex].votes++ ;
- break ;
- }
- case 'Update' : {
- collection[plantIndex].rarity = value ;
- break ;
- }
- case 'Reset' : {
- collection[plantIndex].rating = 0 ;
- collection[plantIndex].votes = 0 ;
- break ;
- }
- }
- instruction = input.shift() ;
- }
- // Part 3: Exhibit Collection
- console.log('Plants for the exhibition:')
- for (let plant of collection) {
- let avgRating = plant.rating ;
- if (plant.votes > 0) {
- avgRating /= plant.votes ;
- }
- console.log(`- ${plant.name}; Rarity: ${plant.rarity}; Rating: ${avgRating.toFixed(2)}`) ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement