Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve(inp) {
- function objectCreation(inp) {
- let demons = {};
- let arrOfNames = inp.split(/\,\s*/);
- for (let el of arrOfNames) {
- demons[el] = { health: getHealth(el), damage: getDamage(el) };
- }
- return demons;
- }
- function getDamage(par) {
- let arr = creatingRegExp(par);
- let damage = arr.reduce((acc, el) => acc + Number(el), 0);
- let multAndDiv = getMultAndDiv(par);
- damage = multAndDiv.reduce((acc, el) => el === '*' ? acc * 2 : acc / 2, damage);
- return damage;
- }
- function creatingRegExp(par) {
- let str = par.split(/[^\d\-\+\.]/g);
- let arr = str.filter(el => el !== '' && el !== '.');
- return arr;
- }
- function getMultAndDiv(par) {
- let str = par.split(/[^\*\/]/g);
- let arr = str.filter(el => el !== '');
- arr = arr.join('').split('');
- return arr;
- }
- function getHealth(par) {
- let str = par.split(/\d|\+|\-|\*|\/|\./g);
- str = str.filter(el => el !== '');
- str = str.join('').split('');
- let health = str.reduce((acc, el) => acc + el.charCodeAt(), 0);
- return health;
- }
- function arrCreation() {
- let demons = objectCreation(inp);
- let arr = [];
- for (let demon in demons) {
- arr.push([demon, demons[demon]]);
- }
- return arr;
- }
- function sorting() {
- let arr = arrCreation();
- arr.sort((a, b) => a[0].localeCompare(b[0]));
- return arr;
- }
- function printing() {
- let arr = sorting();
- for (let el of arr) {
- console.log(`${el[0]} - ${el[1].health} health, ${el[1].damage.toFixed(2)} damage`);
- }
- }
- printing();
- }
- solve(
- // 'M3ph-0.5s-0.5t0.0**'
- 'm15*/c-5.044,Az%a.zel'
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement