Advertisement
svephoto

P!rates [JavaScript]

Aug 2nd, 2020
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function piratesProgram(params) {
  2.     let listObj = {}
  3.     let command = params.shift();
  4.  
  5.     while (command != 'Sail') {
  6.         let commandTowns = command.split('||')
  7.         let town = commandTowns[0];
  8.         let population = Number(commandTowns[1]);
  9.         let gold = Number(commandTowns[2]);
  10.  
  11.         if (listObj.hasOwnProperty(town)) {
  12.             listObj[town].population += population;
  13.             listObj[town].gold += gold;
  14.         }
  15.         else {
  16.             listObj[town] = {
  17.                 population: population,
  18.                 gold: gold
  19.             }
  20.         }
  21.  
  22.         command = params.shift();
  23.     }
  24.  
  25.     command = params.shift();
  26.  
  27.     while (command !== 'End') {
  28.         let commandNext = command.split('=>');
  29.  
  30.         if (commandNext[0] == 'Plunder') {
  31.             let town = commandNext[1];
  32.             let people = Number(commandNext[2]);
  33.             let gold = Number(commandNext[3]);
  34.  
  35.             console.log(`${town} plundered! ${gold} gold stolen, ${people} citizens killed.`);
  36.  
  37.             listObj[town].population -= people;
  38.             listObj[town].gold -= gold;
  39.            
  40.             if ((listObj[town].population <= 0) || (listObj[town].gold <= 0)) {
  41.                 console.log(`${town} has been wiped off the map!`);
  42.  
  43.                 delete listObj[town];
  44.             }
  45.         }
  46.  
  47.         if (commandNext[0] == 'Prosper') {
  48.             let town = commandNext[1];
  49.             let gold = Number(commandNext[2]);
  50.        
  51.             if (gold < 0) {
  52.                 console.log(`Gold added cannot be a negative number!`);
  53.             }
  54.             else {
  55.                 listObj[town].gold += gold;
  56.                 console.log(`${gold} gold added to the city treasury. ${town} now has ${listObj[town].gold} gold.`);
  57.             }
  58.         }
  59.  
  60.         command = params.shift();
  61.     }
  62.  
  63.     let workArr = Object.entries(listObj)
  64.  
  65.     let sorted = workArr.sort((a, b) => {
  66.         if (a[1].gold == b[1].gold) {
  67.             return a[0].localeCompare(b[0]);
  68.         }
  69.         else {
  70.             return b[1].gold - a[1].gold;
  71.         }
  72.     })
  73.  
  74.     console.log(`Ahoy, Captain! There are ${sorted.length} wealthy settlements to go to:`)
  75.  
  76.     for (const kvp of sorted) {
  77.         console.log(`${kvp[0]} -> Population: ${kvp[1].population} citizens, Gold: ${kvp[1].gold} kg`);
  78.     }
  79. }
  80.  
  81. piratesProgram([
  82.     'Tortuga||345000||1250',
  83.     'Santo Domingo||240000||630',
  84.     'Havana||410000||1100',
  85.     'Sail',
  86.     'Plunder=>Tortuga=>75000=>380',
  87.     'Prosper=>Santo Domingo=>180',
  88.     'End'
  89. ])
  90.  
  91. piratesProgram([
  92.     'Nassau||95000||1000',
  93.     'San Juan||930000||1250',
  94.     'Campeche||270000||690',
  95.     'Port Royal||320000||1000',
  96.     'Port Royal||100000||2000',
  97.     'Sail',
  98.     'Prosper=>Port Royal=>-200',
  99.     'Plunder=>Nassau=>94000=>750',
  100.     'Plunder=>Nassau=>1000=>150',
  101.     'Plunder=>Campeche=>150000=>690',
  102.     'End'
  103. ])
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement