Advertisement
didkoslawow

Untitled

Feb 2nd, 2023
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function legendaryFarming(input) {
  2.   const lines = [...input.split(' ')];
  3.   const keyMaterials = {
  4.     shards: 0,
  5.     fragments: 0,
  6.     motes: 0,
  7.   };
  8.   const junkMaterials = {};
  9.   const linesLength = lines.length;
  10.   let legendaryWeapon = '';
  11.  
  12.   for (let i = 0; i < linesLength; i += 2) {
  13.     const quantity = Number(lines[i]);
  14.     const material = lines[i + 1].toLowerCase();
  15.  
  16.     addingMaterials(material, quantity);
  17.  
  18.     if (keyMaterials[material] >= 250) {
  19.       const quantityLeft = keyMaterials[material] - 250;
  20.       keyMaterials[material] = quantityLeft;
  21.       legendaryWeapon = weaponForge(material);
  22.       break;
  23.     }
  24.   }
  25.  
  26.   const sortedKeyMaterials = Object.entries(keyMaterials).sort(
  27.     (a, b) => b[1] - a[1] || a[0].localeCompare(b[0])
  28.   );
  29.   const sortedJunkMaterials = Object.entries(junkMaterials).sort((a, b) =>
  30.     a[0].localeCompare(b[0])
  31.   );
  32.  
  33.   print(legendaryWeapon, sortedKeyMaterials, sortedJunkMaterials);
  34.  
  35.   function addingMaterials(material, quantity) {
  36.     switch (material) {
  37.       case 'shards':
  38.       case 'fragments':
  39.       case 'motes':
  40.         keyMaterials[material] += quantity;
  41.         break;
  42.       default:
  43.         if (!junkMaterials.hasOwnProperty(material)) {
  44.           junkMaterials[material] = quantity;
  45.         } else {
  46.           junkMaterials[material] += quantity;
  47.         }
  48.         break;
  49.     }
  50.   }
  51.  
  52.   function weaponForge(material) {
  53.     switch (material) {
  54.       case 'shards':
  55.         return 'Shadowmourne';
  56.       case 'fragments':
  57.         return 'Valanyr';
  58.       case 'motes':
  59.         return 'Dragonwrath';
  60.     }
  61.   }
  62.  
  63.   function print(legendaryWeapon, keyMaterials, junkMaterials) {
  64.     console.log(`${legendaryWeapon} obtained!`);
  65.  
  66.     keyMaterials.forEach((element) => {
  67.       console.log(`${element[0]}: ${element[1]}`);
  68.     });
  69.     junkMaterials.forEach((element) => {
  70.       console.log(`${element[0]}: ${element[1]}`);
  71.     });
  72.   }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement