Advertisement
Guest User

Untitled

a guest
Jan 13th, 2020
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. function printLeaderAndArmies(input) {
  2. let leaderArmyMap = new Map();
  3. for (let inputRow of input) {
  4. if (inputRow.includes("arrives")) {
  5. var [leader, arrives] = inputRow.split(' ');
  6. leaderArmyMap.set(leader, new Map());
  7. } else if (inputRow.includes(":")) {
  8. var [leader, armyData] = inputRow.split(": ");
  9. var [armyName, armyCount] = armyData.split(", ");
  10. armyCount = +armyCount;
  11. if (leaderArmyMap.has(leader)) {
  12. leaderArmyMap.get(leader).set(armyName, armyCount);
  13. }
  14. } else if (inputRow.includes("+")) {
  15. let [armyName1, armyCountToAdd] = inputRow.split(" + ");
  16. armyCountToAdd = +armyCountToAdd;
  17. if (leaderArmyMap.get(leader).has(armyName1)) {
  18. leaderArmyMap.get(leader).set(armyName1, armyCount += armyCountToAdd);
  19. }
  20. } else if (inputRow.includes("defeated")) {
  21. let [leader, defeated] = inputRow.split(' ');
  22. if (leaderArmyMap.has(leader)) {
  23. leaderArmyMap.delete(leader);
  24. }
  25. }
  26. }
  27. let arrFromLeaderArmyMap = [...leaderArmyMap];
  28. for (let row of arrFromLeaderArmyMap) {
  29. let totalArmy = [...row[1]
  30. .values()]
  31. .reduce((a, b) => a + b);
  32. row.push(totalArmy);
  33. totalArmy = 0;
  34. }
  35.  
  36. let comparator = (a, b) => b[2] - a[2];
  37. arrFromLeaderArmyMap.sort(comparator);
  38. let comparator1 = (a, b) => b[1] - a[1];
  39.  
  40. for (let row of arrFromLeaderArmyMap) {
  41. row[1] = [...row[1]];
  42. row[1] = row[1].sort(comparator1);
  43. }
  44.  
  45. for (let row of arrFromLeaderArmyMap) {
  46. console.log(`${row[0]}: ${row[2]}`);
  47. for (let data of row[1]) {
  48. console.log(`>>> ${data[0]} - ${data[1]}`);
  49. }
  50. }
  51.  
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement