Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function gameOfEpicness(arrayOfObjects, matrixOfString) {
- let kingdoms = {};
- for (let kingdom of arrayOfObjects) {
- if (!kingdoms[kingdom.kingdom]) {
- kingdoms[kingdom.kingdom] = {};
- kingdoms[kingdom.kingdom][kingdom.general] = { army: kingdom.army, wins: 0, losses: 0 }
- } else {
- if (!kingdoms[kingdom.kingdom][kingdom.general]) {
- kingdoms[kingdom.kingdom][kingdom.general] = { army: kingdom.army, wins: 0, losses: 0 }
- } else {
- kingdoms[kingdom.kingdom][kingdom.general].army += kingdom.army;
- }
- }
- }
- for (let line of matrixOfString) {
- let [attackingKingdom, attackingGeneral, defendingKingdom, defendingGeneral] = line;
- if (attackingKingdom !== defendingKingdom && kingdoms[attackingKingdom][attackingGeneral] &&
- kingdoms[defendingKingdom][defendingGeneral]) {
- if (kingdoms[attackingKingdom][attackingGeneral].army > kingdoms[defendingKingdom][defendingGeneral].army) {
- kingdoms[attackingKingdom][attackingGeneral].army += 0.10 * kingdoms[attackingKingdom][attackingGeneral].army;
- kingdoms[attackingKingdom][attackingGeneral].army = parseInt(kingdoms[attackingKingdom][attackingGeneral].army);
- kingdoms[attackingKingdom][attackingGeneral].wins++;
- kingdoms[defendingKingdom][defendingGeneral].army -= 0.10 * kingdoms[defendingKingdom][defendingGeneral].army;
- kingdoms[defendingKingdom][defendingGeneral].army = parseInt(kingdoms[defendingKingdom][defendingGeneral].army);
- kingdoms[defendingKingdom][defendingGeneral].losses++;
- } else if (kingdoms[attackingKingdom][attackingGeneral].army < kingdoms[defendingKingdom][defendingGeneral].army) {
- kingdoms[attackingKingdom][attackingGeneral].army -= 0.10 * kingdoms[attackingKingdom][attackingGeneral].army;
- kingdoms[attackingKingdom][attackingGeneral].army = parseInt(kingdoms[attackingKingdom][attackingGeneral].army);
- kingdoms[attackingKingdom][attackingGeneral].losses++;
- kingdoms[defendingKingdom][defendingGeneral].army += 0.10 * kingdoms[defendingKingdom][defendingGeneral].army;
- kingdoms[defendingKingdom][defendingGeneral].army = parseInt(kingdoms[defendingKingdom][defendingGeneral].army);
- kingdoms[defendingKingdom][defendingGeneral].wins++;
- }
- }
- }
- let winsKingdom = Object.entries(kingdoms).sort((a, b) => {
- let totalWinsA = Object.entries(a[1]).map(el => { return el[1].wins }).reduce((x, y) => x + y, 0);
- let totalWinsB = Object.entries(b[1]).map(el => { return el[1].wins }).reduce((x, y) => x + y, 0);
- let totalLossesA = Object.entries(a[1]).map(el => { return el[1].losses }).reduce((x, y) => x + y, 0);
- let totalLossesB = Object.entries(b[1]).map(el => { return el[1].losses }).reduce((x, y) => x + y, 0);
- return totalWinsB - totalWinsA || totalLossesA - totalLossesB || a[0].localeCompare(b[0])
- })[0];
- winsKingdom.forEach((element, index) => {
- if (index === 0) {
- console.log(`Winner: ${winsKingdom[0]}`)
- } else {
- Object.entries(element)
- .sort((generalA, generalB) => generalB[1].army - generalA[1].army)
- .forEach(general => {
- console.log(`/\\general: ${general[0]}`);
- console.log(`---army: ${general[1].army}`);
- console.log(`---wins: ${general[1].wins}`);
- console.log(`---losses: ${general[1].losses}`);
- });
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement