Advertisement
Venciity

[ExamPreparation] Logs Aggregator

Jul 24th, 2014
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Solve(args) {
  2.     var n = parseInt(args[0]);
  3.     var map = {};
  4.  
  5.     for (var i = 0; i < n; i++) {
  6.         var string = args[i + 1]; // ip, name , number
  7.         var arrProperties = string.split(' ');
  8.         if (map[arrProperties[1]] == undefined) { // проверяваме дали с това име има контакт
  9.             map[arrProperties[1]] = [parseInt(arrProperties[2]), []]; // ако е undefined значи трябва да инциализираме ново entry в map
  10.         }                                                             // с името като ключ (индекс) и първоначалният "duration"
  11.                                                                       // и един празен масив за IP-тата
  12.         else {
  13.             map[arrProperties[1]][0] = map[arrProperties[1]][0] + parseInt(arrProperties[2]);
  14.             // обаче ако имаме вече такова име , увеличаваме предишната стойност на "duration" с тази на current елемента
  15.         }
  16.         if (map[arrProperties[1]][1].indexOf(arrProperties[0]) == -1) { // добавянето на IP-та става тука, ако имаме вече такова IP,
  17.             map[arrProperties[1]][1].push(arrProperties[0]);            // в map[arrProperties[1]][1] което е мястото ,
  18.             //където е масива с IP-та , няма да го добавим. Ако извади indexOf == -1 , значи го няма и го слагаме
  19.         }
  20.     }
  21.  
  22.     var mapKeys = Object.keys(map); // правим array mapKeys , който ще съдържда само ключовете, т.е. имента от този "map"
  23.     mapKeys.sort();                 // сортираме ги
  24.     mapKeys.forEach(function (key) { // преди да принтираме елемента влизаме в масива с IP-та и ги сортираме и тях
  25.         map[key][1].sort();
  26.         console.log("%s: %d [%s]", key, map[key][0], map[key][1].join(", "));
  27.     });
  28. }
  29.  
  30. Solve(["7",
  31. "192.168.0.11 peter 33",
  32. "10.10.17.33 alex 12",
  33. "10.10.17.35 peter 30",
  34. "10.10.17.34 peter 120",
  35. "10.10.17.34 peter 120",
  36. "212.50.118.81 alex 46",
  37. "212.50.118.81 alex 4"]
  38. );
  39.  
  40. Solve(["2",
  41. "84.238.140.178 nakov 25",
  42. "84.238.140.178 nakov 35"]
  43. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement