Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Solve(args) {
- var map = {};
- var n = parseInt(args[0]);
- Array.prototype.toString = function() { // tazi funkciq shte poso4i kak da se display-ne array v obshtiq slu4ai
- return this.join(' ');
- }
- for(var i = 0; i < n; i++) {
- var splitHolder = args[i+1].split(' '); // razdrobqvame stringa na 3 elementa
- if(!(splitHolder[2] in map)) { // proverqvame dali ima item s takav key - ako nqma - vlizame v tozi IF
- map[splitHolder[2]] = []; // suzdavame "globalen" array , koito shte durji vsi4ki [imena i stoinosti]
- //toest shte imame "apples" = [[maria, 9], [alben, 10], [gonzo, 11]];
- map[splitHolder[2]][0] = []; // suzdavame array za vseki otdelen 4ovek
- map[splitHolder[2]][0].toString = function() { // konkretno za tezi koito sa vuv map[splitHolder[2]][0],
- return this.join(', '); // toest svurzvaneto mejdu otdelnite arrays v globalniq array
- }
- var temp = []; // tozi array shte izpolzvam za da pusha 2-te properties
- temp.push(splitHolder[0]);
- temp.push(parseInt(splitHolder[1]));
- map[splitHolder[2]][0].push(temp); // i sled tova pushvam temp array v globalniq kato otdelen "order"
- }
- else { // ako imame ve4e takav klu4
- var found = false; // izpolzvam tozi cikul za da proverq vseki masiv v globalniq po ime i da uveli4a stoinosta na plodovete
- for(var j = 0;j < map[splitHolder[2]][0].length; j++) {
- if(map[splitHolder[2]][0][j][0] == splitHolder[0]) { //ako namerim takova ime
- map[splitHolder[2]][0][j][1] += parseInt(splitHolder[1]);// uveli4avame broq na plodovete, kato kum prednata stoinost dobavqme novata
- found = true; // dobavqme flag za da znaem dali da dobavim nov order
- }
- }
- if(!found) { // ako ne e nameren "not found" takav order ot loopa gore, dobavqme
- var temp = []; // sushtata prcedura kato v purviq IF
- temp.push(splitHolder[0]);
- temp.push(parseInt(splitHolder[1]));
- map[splitHolder[2]][0].push(temp);
- }
- map[splitHolder[2]][0].sort(compare); // sortiram s pomoshta na "override" na compare za da moga da vzema stoinostta na parviq element,
- // toest na imeto i po nego da sravnqvam
- }
- }
- for(var key in map) {
- console.log("%s: %s", key, map[key]); // printiram gotoviq rezultat
- }
- function compare(a, b) {
- 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
- 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
- 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
- // i vrushta 1, ako sa ravni vrushta 0; tui kato sa arrays , mojem da nadniknem v imenata s indeksa "0"
- }
- }
- Solve([8, "steve 8 apples", "maria 3 bananas", "kiro 3 bananas", "kiro 9 apples", "maria 2 apples", "steve 4 apples",
- "kiro 1 bananas", "kiro 1 apples"]);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement