Advertisement
elena1234

NetherRealms*-manySeparators

Nov 23rd, 2020 (edited)
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.73 KB | None | 0 0
  1. using System;
  2. using System.Text.RegularExpressions;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace text
  7. {
  8.     class MainClass
  9.     {
  10.         public static void Main(string[] args)
  11.         {
  12.             string [] namesCollection = Console.ReadLine()
  13.             .Split(new char[] { ' ', ','},StringSplitOptions.RemoveEmptyEntries);
  14.             Regex regexForHealth=new Regex(@"[^\d\+\-*\/\.]");
  15.             Regex regexForDamage = new Regex(@"(?:\+|-)?[0-9]+(?:\.[0-9]+)?");
  16.             Regex regexForMultiplyOrDivideSymbols = new Regex(@"[*\/]");
  17.             var dictNamesHealth = new Dictionary<string, int>();
  18.             var dictNamesDamage = new Dictionary<string, double>();
  19.  
  20.             foreach (string name in namesCollection)
  21.             {
  22.                 MatchCollection matchesForHealth = regexForHealth.Matches(name);
  23.                 if (regexForHealth.IsMatch(name))
  24.                 {
  25.                     int health = 0;
  26.                     foreach (Match match in matchesForHealth)
  27.                     {
  28.                         char symbol = char.Parse(match.ToString());
  29.                         int symbolInt = symbol;
  30.                         health += symbolInt;
  31.                     }
  32.  
  33.                     dictNamesHealth.Add(name, health);
  34.                 }
  35.  
  36.                 double damage = 0;
  37.                 MatchCollection matchesForDamage = regexForDamage.Matches(name);
  38.                 if (regexForDamage.IsMatch(name))
  39.                 {
  40.                     foreach (Match match in matchesForDamage)
  41.                     {
  42.                         damage += double.Parse(match.ToString());
  43.                     }
  44.                 }
  45.  
  46.                 MatchCollection matchesForMultiplyOrDivideSymbols = regexForMultiplyOrDivideSymbols.Matches(name);
  47.                 if (regexForMultiplyOrDivideSymbols.IsMatch(name))
  48.                 {
  49.                     foreach (Match match in matchesForMultiplyOrDivideSymbols)
  50.                     {
  51.                         if (match.ToString() == "*")
  52.                         {
  53.                             damage = damage * 2;
  54.                         }
  55.  
  56.                         else if (match.ToString() == "/")
  57.                         {
  58.                             damage = damage / 2;
  59.                         }
  60.                     }
  61.                 }
  62.  
  63.                 dictNamesDamage.Add(name, damage);
  64.             }
  65.  
  66.             foreach (var kvp in dictNamesHealth.OrderBy(x=>x.Key))
  67.             {
  68.                 string name = kvp.Key;
  69.                 int health = kvp.Value;
  70.                 double damage = dictNamesDamage[name];
  71.                 Console.WriteLine($"{name} - {health} health, {damage:F2} damage");
  72.             }
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement