AreWe

tseamAccount за луди

Jun 9th, 2020
1,183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. tseamAccount = (input) => {
  2.  
  3.     const indexOf = (array, element) => {
  4.         const len = array.length;
  5.         for(let i = 0; i < len; i++) {
  6.             if(array[i] === element) {
  7.                 return i;
  8.             }
  9.         }
  10.         return -1;
  11.     };
  12.  
  13.     const removeAt = (array, index) => {
  14.         let len = array.length;
  15.         if(index < 0 || index > len - 1) return undefined;
  16.         const element = array[index];
  17.        
  18.         for(let i = index; i < len; i++) {
  19.             array[i] = array[i+1];
  20.         }
  21.         array.length = len - 1;
  22.        
  23.         return element;
  24.     };
  25.  
  26.     const addAt = (array, index, item) => {
  27.         const len = array.length;
  28.         if(index < 0 || index > len) {
  29.             return;
  30.         }
  31.         if(index === len) {
  32.             array[len] = item;
  33.             return;
  34.         }
  35.        
  36.         for(let i = len; i > index; i--) {
  37.             array[i] = array[i-1];
  38.         }
  39.         array[index] = item;
  40.     };
  41.  
  42.     const printArray = (array, separator) => {
  43.         let output = '';
  44.         const len = array.length;
  45.         for(let i = 0; i < len; i++) {
  46.             output += `${array[i]}${separator}`;
  47.         }
  48.         console.log(output);
  49.     };
  50.  
  51.     const substring = (string, startIndex, count) => {
  52.         let substring = '';
  53.         const len = count ? count + startIndex : string.length;
  54.         for(let i = startIndex; i < len; i++) {
  55.             substring += string[i];
  56.         }
  57.         return substring;
  58.     };
  59.  
  60.     const split = (string, ch) => {
  61.         let array = [], item = '';
  62.         const len = string.length;
  63.         for(let i = 0; i < len; i++) {
  64.             if(string[i] !== ch) {
  65.                 item += string[i];
  66.             } else {
  67.                 array[array.length] = item;
  68.                 item = '';
  69.             }
  70.         }
  71.         array[array.length] = item;
  72.         return array;
  73.     };
  74.  
  75.     let list = split(input[0], ' ');
  76.    
  77.     let counter = 1;
  78.     while((line = input[counter++])[0] !== 'P') {
  79.         if(line[0] === 'I') { // Install
  80.             if(indexOf(list, (game = substring(line, 8))) === -1) {
  81.                 addAt(list, list.length, game);
  82.             }
  83.         } else if(line[0] === 'U') {
  84.             if(line[1] === 'n') { // Uninstall
  85.                 removeAt(list, indexOf(list, substring(line, 10)));
  86.             } else { // Update
  87.                 if((game = removeAt(list, indexOf(list, substring(line, 7))))) {
  88.                     addAt(list, list.length, game);
  89.                 }
  90.             }
  91.         } else { // Expansion
  92.             const [ game, expansion ] = split(substring(line, 10), '-');
  93.             if((index = indexOf(list, game)) !== -1) {
  94.                 addAt(list, index + 1, `${list[index]}:${expansion}`);
  95.             }
  96.         }
  97.     }
  98.  
  99.     printArray(list, ' ');
  100. };
Advertisement
Add Comment
Please, Sign In to add comment