Advertisement
Guest User

Nether Realms

a guest
Jul 6th, 2017
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7.  
  8. namespace _03_NetherRealms
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. var input = Console.ReadLine()
  15. .Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)
  16. .ToArray();
  17.  
  18. var numPattern = @"(?<num>\-?\+?(\d+(\.\d+)?))|(?<symbol>\*|\/)";
  19. var symbolsList = new List<char>();
  20. var result = new Dictionary<string, string>();
  21.  
  22. for (int i = 0; i < input.Length; i++)
  23. {
  24. var currentDemon = input[i].Trim();
  25.  
  26. var matchedDamagedChars = Regex.Matches(currentDemon, numPattern);
  27. decimal damage = 0;
  28.  
  29. foreach (Match item in matchedDamagedChars)
  30. {
  31. decimal number = 0;
  32. if (decimal.TryParse((item.Groups["num"].Value), out number))
  33. {
  34. damage += number;
  35. continue;
  36. }
  37. var symbol = char.Parse(item.Groups["symbol"].Value);
  38. symbolsList.Add(symbol);
  39. }
  40.  
  41. foreach (var symbol in symbolsList)
  42. {
  43. if (symbol == '*')
  44. {
  45. damage *= 2;
  46. }
  47. else if (symbol == '/')
  48. {
  49. damage /= 2;
  50. }
  51. }
  52.  
  53. var healthPattern = @"[^0-9+\-*\/\.,\s]";
  54. long health = 0;
  55.  
  56. var matchedHealthChars = Regex.Matches(currentDemon, healthPattern);
  57.  
  58. foreach (Match symbol in matchedHealthChars)
  59. {
  60. health += Convert.ToChar(symbol.Value);
  61. }
  62.  
  63. result[currentDemon] = $"{health} health, {damage:f2} damage";
  64. }
  65.  
  66. foreach (var demon in result.OrderBy(a => a.Key))
  67. {
  68. Console.WriteLine($"{demon.Key} - {demon.Value}");
  69. }
  70. }
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement