Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace NetherRealm
- {
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text.RegularExpressions;
- public class Demon
- {
- public string Name { get; set; }
- public long Health { get; set; }
- public decimal Damage { get; set; }
- }
- class DamonRealm
- {
- static void Main()
- {
- var demons = Console.ReadLine().Split(new char[] { ' ', ',', '\t' }
- , StringSplitOptions.RemoveEmptyEntries);
- List<Demon> Demons = new List<Demon>();
- var sortedDemons = Demons.OrderBy(x => x.Name);
- for (int i = 0; i < demons.Length; i++)
- {
- Demon currentDemon = new Demon
- {
- Name = demons[i],
- Health = GetHealth(demons[i]),
- Damage = GetDamage(demons[i])
- };
- Demons.Add(currentDemon);
- }
- foreach (var demon in sortedDemons)
- {
- Console.WriteLine($"{demon.Name} - {demon.Health} health, {demon.Damage:F2} damage");
- }
- }
- private static decimal GetDamage(string demonName)
- {
- decimal damage = 0M;
- decimal counterMultiplaiers = 0M;
- decimal counterDividers = 0M;
- string pattern = @"[+-]?\d+(\.\d+)?";
- foreach (var charachter in demonName)
- {
- if (charachter == '*')
- {
- counterMultiplaiers++;
- }
- if (charachter == '/')
- {
- counterDividers++;
- }
- }
- foreach (Match m in Regex.Matches(demonName, pattern))
- {
- damage += decimal.Parse(m.Value);
- }
- if (counterMultiplaiers != 0)
- {
- for (int i = 0; i < counterMultiplaiers; i++)
- {
- if (counterMultiplaiers >= 0)
- {
- damage *= 2;
- }
- }
- }
- if (counterDividers != 0)
- {
- for (int i = 0; i < counterDividers; i++)
- {
- if (counterDividers > 0)
- {
- damage /= 2;
- }
- }
- }
- return damage;
- }
- private static long GetHealth(string demonName)
- {
- long health = 0;
- var currentName = demonName;
- for (int i = 0; i < demonName.Length; i++)
- {
- bool invalidChars = InvalidChars(demonName, i);
- if (!invalidChars)
- {
- health += demonName[i];
- }
- }
- return health;
- }
- private static bool InvalidChars(string demonName, int i)
- {
- return (demonName[i] == '*' || demonName[i] == '.' || demonName[i] == '/' || demonName[i] == '+' || demonName[i] == '-' ||
- demonName[i] == '1' || demonName[i] == '2' || demonName[i] == '3' || demonName[i] == '4' || demonName[i] == '5'
- || demonName[i] == '6' || demonName[i] == '7' || demonName[i] == '8' || demonName[i] == '9' || demonName[i] == '0');
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement