Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function arenaTier(input) {
- let start = 0;
- let endProgram = false;
- let obj = {};
- for (let line of input) {
- if (line === "Ave Cesar") { // ends the loop
- endProgram = true;
- break;
- }
- if (line.includes("vs")) { // fighting
- start = input.indexOf(line);
- break;
- } else {
- let [name, technique, skill] = line.split(" -> ");
- skill = Number(skill);
- if (!obj.hasOwnProperty(name)) {
- obj[name] = {};
- obj[name][technique] = skill;
- } else if (obj.hasOwnProperty(name) && !obj[name].hasOwnProperty(technique)) {
- obj[name][technique] = skill;
- } else if (obj.hasOwnProperty(name) && obj[name].hasOwnProperty(technique)) {
- if (skill > obj[name][technique]) {
- obj[name][technique] = skill;
- }
- }
- }
- }
- for (let name in obj) { // calc totalSkill
- let totalSkill = 0;
- for (let tech in obj[name]) {
- totalSkill += obj[name][tech];
- }
- obj[name].totalSkill = totalSkill;
- }
- if (start > 0) {
- for (let i = start; i < input.length; i++) {
- if (input[i] === "Ave Cesar") {
- endProgram = true;
- break;
- }
- let [gladiator1, gladiator2] = input[i].split(" vs ");
- let willFight = false;
- let commonTechnique = "";
- if (obj.hasOwnProperty(gladiator1) && obj.hasOwnProperty(gladiator2)) {
- for (let tech in obj[gladiator1]) {
- if (obj[gladiator2].hasOwnProperty(tech)) {
- willFight = true;
- commonTechnique = tech;
- break;
- }
- }
- }
- if (willFight) {
- if (obj[gladiator1].totalSkill > obj[gladiator2].totalSkill) {
- delete obj[gladiator2];
- } else if (obj[gladiator1].totalSkill < obj[gladiator2].totalSkill) {
- delete obj[gladiator1];
- }
- }
- }
- }
- let sorted = Object.entries(obj).sort((a, b) => { //sorted by totalSkill first, by name second
- if (b[1].totalSkill - a[1].totalSkill === 0) {
- return a[0].localeCompare(b[0]);
- } else {
- return b[1].totalSkill - a[1].totalSkill;
- }
- });
- if (endProgram) { // Ave Cesar
- for (let pair of sorted) {
- console.log(`${pair[0]}: ${pair[1].totalSkill} skill`);
- pair[1] = Object.entries(pair[1]).sort((a, b) => {
- if (b[1] - a[1] !== 0) {
- return b[1] - a[1];
- } else {
- return a[0].localeCompare(b[0]);
- }
- });
- for (let kvp of pair[1]) {
- if (kvp[0] !== "totalSkill") {
- console.log(`- ${kvp[0]} <!> ${kvp[1]}`);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement