Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(arr) {
- let leaders = [];
- for (let info of arr) {
- if (info.includes('arrives')) {
- const leader = info.substring(0, info.indexOf('arrive') - 1);
- leaders.push([leader, new Map()]);
- } else if (info.includes('defeated')) {
- const leader = info.substring(0, info.indexOf('defeated') - 1);
- if (leaders.filter(x => x[0] === leader).length > 0) { leaders.splice(leaders.indexOf(leaders.filter(x => x[0] === leader)[0]), 1); }
- } else if (info.includes(': ')) {
- const leader = info.substring(0, info.indexOf(':'));
- const army = info.substring(info.indexOf(':') + 2, info.indexOf(','));
- let armyCount = Number(info.substring(info.lastIndexOf(' ')),);
- if (leaders.filter(x => x[0] == leader).length > 0) { leaders.filter(x => x[0] == leader)[0][1].set(army, armyCount); }
- } else if (info.includes('+')) {
- const army = info.substring(0, info.indexOf(' +') );
- const newCount = Number(info.substring(info.indexOf('+') + 1,));
- if (leaders.filter(x => x[1].has(army)).length > 0) {
- let armyToChange = leaders.filter(x => x[1].has(army))[0][1];
- armyToChange.set(army, armyToChange.get(army) + newCount);
- }
- }
- }
- for (let leader of leaders.sort((a, b) => [...b[1].values()].reduce((a, b) => a + b) - [...a[1].values()].reduce((a, b) => a + b))) {
- console.log(`${leader[0]}: ${[...leader[1].values()].reduce((a, b) => a + b)}`);
- [...leader[1].entries()].sort((a, b) => b[1] - a[1]).forEach(x => console.log(`>>> ${x[0]} - ${x[1]}`));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment