Advertisement
Guest User

Java Basics Exam 27 May 2014 - Orders

a guest
Jul 26th, 2014
379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Solve(args) {
  2.     var map = {};
  3.  
  4.     var n = parseInt(args[0]);
  5.     Array.prototype.toString = function() { // tazi funkciq shte poso4i kak da se display-ne array v obshtiq slu4ai
  6.         return this.join(' ');
  7.     }
  8.  
  9.     for(var i = 0; i < n; i++) {
  10.         var splitHolder = args[i+1].split(' ');  // razdrobqvame stringa na 3 elementa
  11.  
  12.         if(!(splitHolder[2] in map)) { // proverqvame dali ima item s takav key - ako nqma - vlizame v tozi IF
  13.             map[splitHolder[2]] = []; // suzdavame "globalen" array , koito shte durji vsi4ki [imena i stoinosti]
  14.                                         //toest shte imame "apples" = [[maria, 9], [alben, 10], [gonzo, 11]];
  15.             map[splitHolder[2]][0] = []; // suzdavame array za vseki otdelen 4ovek
  16.             map[splitHolder[2]][0].toString = function() { // konkretno za tezi koito sa vuv map[splitHolder[2]][0],
  17.                 return this.join(', ');  // toest svurzvaneto mejdu otdelnite arrays v globalniq array
  18.             }
  19.             var temp = []; // tozi array shte izpolzvam za da pusha 2-te properties
  20.             temp.push(splitHolder[0]);
  21.             temp.push(parseInt(splitHolder[1]));
  22.  
  23.             map[splitHolder[2]][0].push(temp);  // i sled tova pushvam temp array v globalniq kato otdelen "order"
  24.  
  25.         }
  26.         else {     // ako imame ve4e takav klu4
  27.             var found = false;      // izpolzvam tozi cikul za da proverq vseki masiv v globalniq po ime i da uveli4a stoinosta na plodovete
  28.             for(var j = 0;j < map[splitHolder[2]][0].length; j++) {
  29.                 if(map[splitHolder[2]][0][j][0] == splitHolder[0]) {   //ako namerim takova ime
  30.                     map[splitHolder[2]][0][j][1] += parseInt(splitHolder[1]);// uveli4avame broq na plodovete, kato kum prednata stoinost dobavqme novata
  31.                     found = true; // dobavqme flag za da znaem dali da dobavim nov order
  32.                 }
  33.             }
  34.             if(!found) { // ako ne e nameren "not found" takav order ot loopa gore, dobavqme
  35.                 var temp = [];      // sushtata prcedura kato v purviq IF
  36.                 temp.push(splitHolder[0]);
  37.                 temp.push(parseInt(splitHolder[1]));
  38.  
  39.                 map[splitHolder[2]][0].push(temp);
  40.             }
  41.             map[splitHolder[2]][0].sort(compare);  // sortiram s pomoshta na "override" na compare za da moga da vzema stoinostta na parviq element,
  42.                                                     // toest na imeto i po nego da sravnqvam
  43.         }
  44.     }
  45.  
  46.     for(var key in map) {
  47.           console.log("%s: %s", key, map[key]);  // printiram gotoviq rezultat
  48.     }
  49.  
  50.     function compare(a, b) {
  51.         if(a[0] < b[0]) return -1;   // a i b sa 2 arrays, funciqta sort izpolzva a i b za da podrejda elementite v zavisimost ot kakva stoinost vrashtat
  52.         if(b[0] < a[0]) return 1;    // ako imeto na b e po golqmo se vrushta -1 , toest predstavete si go taka : ako lqvata strana e po malka se vrushta -1
  53.         return 0;                    // kakto e v koordinatnata sistema, "a" e otlqvo i ako e po malko vrushta -1 ako b e po malko gledame dqsnata strana na koordinatnata
  54.                                     // i vrushta 1, ako sa ravni vrushta 0; tui kato sa arrays , mojem da nadniknem v imenata s indeksa "0"
  55.     }
  56. }
  57.  
  58. Solve([8, "steve 8 apples", "maria 3 bananas", "kiro 3 bananas", "kiro 9 apples", "maria 2 apples", "steve 4 apples",
  59. "kiro 1 bananas", "kiro 1 apples"]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement