dremadred

dragon

Feb 24th, 2017
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text.RegularExpressions;
  5.  
  6. namespace _3.Nether_Realms
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. var dragons = "M3ph1st0**, Azazel"
  13. .Split(", ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
  14. .Select(Dragon.Parse)
  15. .OrderBy(a => a.Name)
  16. .ToArray();
  17.  
  18. foreach (var dragon in dragons)
  19. {
  20. Console.WriteLine($"{dragon.Name}- {dragon.Health} health, {dragon.Damage} damage");
  21. }
  22. }
  23.  
  24. }
  25. class Dragon
  26. {
  27. public string Name { get; set; }
  28. public decimal Health { get; set; }
  29. public decimal Damage { get; set; }
  30.  
  31. public static object Parse (string dragonName)
  32. {
  33. var dragon = new Dragon();
  34.  
  35. dragon.Name = dragonName;
  36.  
  37. dragon.Health = CalculateHealth(dragonName);
  38.  
  39. dragon.Damage = CalculateDamage(dragonName);
  40.  
  41. return dragon;
  42.  
  43.  
  44. }
  45.  
  46. private static decimal CalculateDamage (string dragonName)
  47. {
  48. var damageNumberPattern = @"[+-]?\d+(?:\.?\d+)?";
  49.  
  50. var damageNumber = Regex.Matches(dragonName, damageNumberPattern);
  51. var damageSum = 0m;
  52.  
  53. foreach (Match match in damageNumber)
  54. {
  55. damageSum += decimal.Parse(match.Value);
  56. }
  57.  
  58. var modifiers = dragonName
  59. .Where(a => a == '*' || a == '/')
  60. .ToArray();
  61.  
  62. foreach (var modifier in modifiers)
  63. {
  64. switch (modifier)
  65. {
  66. case '*':
  67. damageSum = 2;
  68. break;
  69. case '/':
  70. damageSum /= 2;
  71. break;
  72.  
  73. }
  74. }
  75.  
  76. return damageSum;
  77.  
  78. }
  79.  
  80. private static decimal CalculateHealth(string dragonName)
  81. {
  82. var healthpatern = @"[^0-9+\-*\/\.]";
  83.  
  84. var healthChars = Regex.Matches(dragonName, healthpatern);
  85.  
  86. var healthValues = new List<int>();
  87.  
  88. foreach (Match match in healthChars)
  89. {
  90. Console.WriteLine(char.Parse(match.Value));
  91. }
  92.  
  93. var health = healthValues.Sum();
  94. return health;
  95. }
  96. }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment