Advertisement
Filkolev

Vladko's Notebook - Solution

Mar 24th, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(args) {
  2.     var result = {},
  3.         output = {},
  4.         i,
  5.         tokens,
  6.         color,
  7.         prop,
  8.         value,
  9.         rank,
  10.         sortedColors;
  11.  
  12.     for (i in args) {
  13.         tokens = args[i].split('|');
  14.  
  15.         color = tokens[0];
  16.         prop = tokens[1];
  17.         value = tokens[2];
  18.  
  19.         if (!result[color]) {
  20.             result[color] = {
  21.                 opponents: [],
  22.                 wins: 0,
  23.                 losses: 0
  24.             };
  25.         }
  26.  
  27.         switch (prop) {
  28.             case 'age':
  29.             case 'name':
  30.                 result[color][prop] = value;
  31.                 break;
  32.             case 'win':
  33.                 result[color].wins += 1;
  34.                 result[color].opponents.push(value);
  35.                 break;
  36.             case 'loss':
  37.                 result[color].losses += 1;
  38.                 result[color].opponents.push(value);
  39.                 break;
  40.         }
  41.     }
  42.  
  43.     sortedColors = Object.keys(result).sort();
  44.  
  45.     for (i in sortedColors) {
  46.         rank = ((result[sortedColors[i]].wins + 1) / (result[sortedColors[i]].losses + 1)).toFixed(2);
  47.  
  48.         if (!result[sortedColors[i]].name || !result[sortedColors[i]].age) {
  49.             continue;
  50.         }
  51.  
  52.         output[sortedColors[i]] = {
  53.             age: result[sortedColors[i]].age,
  54.             name: result[sortedColors[i]].name,
  55.             opponents: result[sortedColors[i]].opponents.sort(),
  56.             rank: rank
  57.         }
  58.     }
  59.  
  60.     console.log(JSON.stringify(output));
  61. }
  62.  
  63. //solve([
  64. //    'purple|age|99',
  65. //    'red|age|44',
  66. //    'blue|win|pesho',
  67. //    'blue|win|mariya',
  68. //    'purple|loss|Kiko',
  69. //    'purple|loss|Kiko',
  70. //    'purple|loss|Kiko',
  71. //    'purple|loss|Yana',
  72. //    'purple|loss|Yana',
  73. //    'purple|loss|Manov',
  74. //    'purple|loss|Manov',
  75. //    'red|name|gosho',
  76. //    'blue|win|Vladko',
  77. //    'purple|loss|Yana',
  78. //    'purple|name|VladoKaramfilov',
  79. //    'blue|age|21',
  80. //    'blue|loss|Pesho'
  81. //]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement