Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(arr) {
- let kingdomEntries = arr[0];
- let battleEntries = arr[1];
- kingdoms = []
- for (let i = 0; i < kingdomEntries.length; i++) {
- const entry = kingdomEntries[i];
- let kingdomName = entry.kingdom;
- let generalName = entry.general;
- let armyCount = entry.army;
- if (kingdoms.filter(k => k.name === kingdomName).length > 0) {
- let kingdom = kingdoms.filter(k => k.name === kingdomName)[0];
- if (kingdom.generals.filter(g => g.name === generalName).length > 0){
- let general = kingdom.generals.filter(g => g.name === generalName)[0];
- general.army += armyCount;
- } else {
- kingdom.generals.push({
- name: generalName,
- army: armyCount,
- wins: 0,
- losses: 0,
- })
- }
- } else {
- kingdoms.push({
- name: kingdomName,
- generals: [{
- name: generalName,
- army: armyCount,
- wins: 0,
- losses: 0,
- }],
- totalWins: 0,
- totalLosses: 0,
- })
- }
- }
- for (let i = 0; i < battleEntries.length; i++) {
- const entry = battleEntries[i];
- let attKingdomName = entry[0];
- let attGeneralName = entry[1];
- let defKingdomName = entry[2];
- let defGeneralName = entry[3];
- let attGeneral;
- let defGeneral;
- if(attKingdomName === defKingdomName){
- continue;
- }
- let attKingdom = kingdoms.filter(k => k.name === attKingdomName)[0];
- let defKingdom = kingdoms.filter(k => k.name === defKingdomName)[0];
- if(kingdoms.filter(k => k.name === attKingdomName)[0].generals.filter(g => g.name === attGeneralName).length > 0){
- attGeneral = kingdoms.filter(k => k.name === attKingdomName)[0].generals.filter(g => g.name === attGeneralName)[0];
- }
- if(kingdoms.filter(k => k.name === defKingdomName)[0].generals.filter(g => g.name === defGeneralName).length > 0){
- defGeneral = kingdoms.filter(k => k.name === defKingdomName)[0].generals.filter(g => g.name === defGeneralName)[0];
- }
- if(attGeneral.army === defGeneral.army){
- continue;
- }
- let winner = attGeneral;
- let loser = defGeneral;
- let winnerKingdom = attKingdom;
- let losingKingdom = defKingdom;
- if(attGeneral.army < defGeneral.army){
- winner = defGeneral;
- winnerKingdom = defKingdom;
- loser = attGeneral;
- losingKingdom = attKingdom;
- }
- loser.army = Math.floor(loser.army * 0.9);
- loser.losses += 1;
- losingKingdom.totalLosses += 1;
- winner.army = Math.floor(winner.army * 1.1);
- winner.wins += 1;
- winnerKingdom.totalWins += 1;
- }
- kingdoms.sort(function(a, b){
- if(a.totalWins > b.totalWins) {return -1; }
- if(a.totalWins < b.totalWins) {return 1; }
- else{
- if(a.totalLosses < b.totalLosses) {return -1; }
- if(a.totalLosses > b.totalLosses) {return 1; }
- else{
- a.name.localeCompare(b.name);
- }
- }
- })
- let winningKingdom = kingdoms[0];
- winningKingdom.generals.sort(function(a, b){
- return b.army - a.army;
- });
- console.log(`Winner: ${winningKingdom.name}`);
- winningKingdom.generals.forEach(general => {
- console.log(`/\general: ${general.name}`);
- console.log(`---army: ${general.army}`);
- console.log(`---wins: ${general.wins}`);
- console.log(`---losses: ${general.losses}`);
- });
- }
- solve([[{ kingdom: "Maiden Way", general: "Merek", army: 5000 },
- { kingdom: "Stonegate", general: "Ulric", army: 4900 },
- { kingdom: "Stonegate", general: "Doran", army: 70000 },
- { kingdom: "YorkenShire", general: "Quinn", army: 0 },
- { kingdom: "YorkenShire", general: "Quinn", army: 2000 },
- { kingdom: "Maiden Way", general: "Berinon", army: 100000 }],
- [["YorkenShire", "Quinn", "Stonegate", "Ulric"],
- ["Stonegate", "Ulric", "Stonegate", "Doran"],
- ["Stonegate", "Doran", "Maiden Way", "Merek"],
- ["Stonegate", "Ulric", "Maiden Way", "Merek"],
- ["Maiden Way", "Berinon", "Stonegate", "Ulric"]]
- ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement