Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function game(arr, moves) {
- let kingdoms = {};
- for (const json of arr) {
- if (!kingdoms.hasOwnProperty(json.kingdom)) {
- kingdoms[json.kingdom] = {};
- }
- if (!kingdoms[json.kingdom].hasOwnProperty(json.general)) {
- kingdoms[json.kingdom][json.general] = {army: 0, won: 0, lost: 0};
- }
- kingdoms[json.kingdom][json.general].army += json.army;
- }
- for (const move of moves) {
- let [kingdom1, general1, kingdom2, general2] = move;
- if (kingdom1 === kingdom2) {
- continue;
- }
- let atacking = kingdoms[kingdom1][general1].army;
- let defending = kingdoms[kingdom2][general2].army;
- if (atacking === defending) {
- continue;
- }
- if (atacking > defending) {
- atacking = Math.floor(atacking * 1.10);
- defending = Math.floor(defending * 0.9);
- kingdoms[kingdom1][general1].army = atacking;
- kingdoms[kingdom1][general1].won += 1;
- kingdoms[kingdom2][general2].army = defending;
- kingdoms[kingdom2][general2].lost += 1;
- }
- else {
- atacking = Math.floor(atacking * 0.9);
- defending = Math.floor(defending * 1.1);
- kingdoms[kingdom1][general1].army = atacking;
- kingdoms[kingdom1][general1].lost += 1;
- kingdoms[kingdom2][general2].army = defending;
- kingdoms[kingdom2][general2].won += 1;
- }
- }
- let result = Object.keys(kingdoms);
- result.sort(function (x, y) {
- function calculateWins(generals) {
- let sum = 0;
- let currentGen = Object.keys(generals);
- for (const gen of currentGen) {
- sum += generals[gen].won;
- }
- return sum;
- }
- let wins1 = calculateWins(kingdoms[x]);
- let wins2 = calculateWins(kingdoms[y]);
- function calculateLost(generals) {
- let sum = 0;
- let currentGen = Object.keys(generals);
- for (const gen of currentGen) {
- sum += generals[gen].lost;
- }
- return sum;
- }
- if (wins2 !== wins1) {
- return wins2 - wins1;
- }
- else {
- let losses1 = calculateLost(kingdoms[x]);
- let losses2 = calculateLost(kingdoms[y]);
- if (losses1 !== losses2) {
- return losses1 - losses2;
- }
- else {
- return x.localeCompare(y)
- }
- }
- })
- let victor = result[0];
- console.log(`Winner: ${victor}`);
- let victorGenerals = kingdoms[victor];
- let finalOrder = Object.keys(victorGenerals).sort(function (x, y) {
- return victorGenerals[y].army - victorGenerals[x].army
- })
- for (const string of finalOrder) {
- console.log(`/\\general: ${string}`);
- console.log(`---army: ${victorGenerals[string].army}`);
- console.log(`---wins: ${victorGenerals[string].won}`);
- console.log(`---losses: ${victorGenerals[string].lost}`);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement