Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace _03_NetherRealms
- {
- class Program
- {
- static void Main(string[] args)
- {
- var input = Console.ReadLine()
- .Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)
- .ToArray();
- var numPattern = @"(?<num>\-?\+?(\d+(\.\d+)?))|(?<symbol>\*|\/)";
- var symbolsList = new List<char>();
- var result = new Dictionary<string, string>();
- for (int i = 0; i < input.Length; i++)
- {
- var currentDemon = input[i].Trim();
- var matchedDamagedChars = Regex.Matches(currentDemon, numPattern);
- decimal damage = 0;
- foreach (Match item in matchedDamagedChars)
- {
- decimal number = 0;
- if (decimal.TryParse((item.Groups["num"].Value), out number))
- {
- damage += number;
- continue;
- }
- var symbol = char.Parse(item.Groups["symbol"].Value);
- symbolsList.Add(symbol);
- }
- foreach (var symbol in symbolsList)
- {
- if (symbol == '*')
- {
- damage *= 2;
- }
- else if (symbol == '/')
- {
- damage /= 2;
- }
- }
- var healthPattern = @"[^0-9+\-*\/\.,\s]";
- long health = 0;
- var matchedHealthChars = Regex.Matches(currentDemon, healthPattern);
- foreach (Match symbol in matchedHealthChars)
- {
- health += Convert.ToChar(symbol.Value);
- }
- result[currentDemon] = $"{health} health, {damage:f2} damage";
- }
- foreach (var demon in result.OrderBy(a => a.Key))
- {
- Console.WriteLine($"{demon.Key} - {demon.Value}");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement