Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Collections.Generic;
- using System.Text.RegularExpressions;
- public class NetherRealms
- {
- public static void Main()
- {
- var demonNames = Console.ReadLine().Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
- var demonsList = new List<Demon>();
- foreach (var name in demonNames)
- {
- var currentDemon = new Demon(name);
- currentDemon.Damage = CalcDamage(name);
- currentDemon.Health = CalcHealth(name);
- demonsList.Add(currentDemon);
- }
- foreach (var demon in demonsList.OrderBy(d => d.Name))
- {
- Console.WriteLine($"{demon.Name} - {demon.Health} health, {demon.Damage:f2} damage");
- }
- }
- static double CalcDamage(string name)
- {
- Regex regexNumbers = new Regex(@"([\+|-]*\d+\.?\d*)");
- Regex regexOperators = new Regex(@"([\/\*])");
- MatchCollection matchesNums = regexNumbers.Matches(name);
- MatchCollection matchesOps = regexOperators.Matches(name);
- double damage = 0d;
- foreach (Match match in matchesNums)
- damage += double.Parse(match.Groups[0].ToString());
- foreach (Match match in matchesOps)
- {
- switch (match.Groups[0].ToString())
- {
- case "*": damage *= 2.0; break;
- case "/": damage /= 2.0; break;
- default:
- break;
- }
- }
- return damage;
- }
- static int CalcHealth(string name)
- {
- Regex regex = new Regex(@"([^0-9\+\-\*\/\.])");
- MatchCollection matches = regex.Matches(name);
- int health = 0;
- foreach (Match match in matches)
- {
- char currentChar = match.Groups[0].ToString()[0];
- health += (int)currentChar;
- }
- return health;
- }
- }
- public class Demon
- {
- public string Name { get; set; }
- public double Damage { get; set; }
- public int Health { get; set; }
- public Demon(string name)
- {
- Name = name;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement