Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function armies(input) {
- let armies = []
- //Read input
- input.forEach(el => {
- //"{leader} arrives"
- if (el.includes('arrives')) {
- const leader = el.replace(' arrives', '');
- armies.push({ 'leader': leader })
- //"{leader}: {army name}, {army count}"
- } else if (el.includes(':')) {
- let [leader, army, count] = el.split(/\W /g);
- count = Number(count);
- armies.forEach(el => {
- if (el['leader'] === leader) {
- el[army] = count;
- if (!el.total) {
- el.total = count;
- } else {
- el.total += count;
- }
- }
- })
- //"{army name} + {army count}"
- } else if (el.includes('+')) {
- let [army, count] = el.split(' + ');
- count = Number(count);
- armies.forEach(el => {
- if (el.hasOwnProperty(army)) {
- el[army] += count;
- el.total += count;
- }
- })
- //"{leader} defeated"
- } else if (el.includes('defeated')) {
- const leader = el.replace(' defeated', '');
- armies.forEach((el, i) => {
- if (el['leader'] === leader) {
- armies.splice(i, 1);
- }
- })
- }
- })
- //Sort total army count
- armies.sort((a, b) => b.total - a.total);
- //Print Output
- armies.forEach(el => {
- // Check if leader has no army
- if (!el.total) {
- el.total = 0
- };
- console.log(`${el['leader']}: ${el['total']}`);
- delete el.leader;
- delete el.total;
- // Sort distinct armies
- let arr = [];
- for (const [army, count] of Object.entries(el)) {
- arr.push([army, count])
- }
- arr.sort((a, b) => b[1] - a[1]);
- //Print army
- arr.forEach(el => console.log(`>>> ${el[0]} - ${el[1]}`));
- })
- }
Add Comment
Please, Sign In to add comment