Advertisement
krasi1105

Nether-Realms

Feb 25th, 2017
201
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.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Text.RegularExpressions;
  7.  
  8. namespace Tech_Module_23_10_Exam
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             string[] input = Console.ReadLine()
  15.                             .Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries)
  16.                             .OrderBy(a => a)
  17.                             .ToArray();
  18.             List<Demon> demons = new List<Demon>();
  19.             foreach (var demonName in input)
  20.             {
  21.                 double damage = CalculateDamage(demonName);
  22.                 int health = CalculateHealth(demonName);
  23.                 Demon newDemon = new Demon()
  24.                 {
  25.                     Name = demonName,
  26.                     Damage = damage,
  27.                     Health = health
  28.                 };
  29.                 demons.Add(newDemon);
  30.             }
  31.  
  32.             demons = demons.OrderBy(a => a.Name).ToList();
  33.             foreach (var demon in demons)
  34.             {
  35.                 Console.WriteLine("{0} - {1} health, {2:f2} damage", demon.Name, demon.Health, demon.Damage);
  36.             }
  37.         }
  38.  
  39.         private static int CalculateHealth(string demonData)
  40.         {
  41.             Regex healthRegex = new Regex(@"[^0-9+\-*/\.]");
  42.             MatchCollection matches = healthRegex.Matches(demonData);
  43.             int health = 0;
  44.             foreach (Match m in matches)
  45.             {
  46.                 health += m.Value[0]; // every match is only one char
  47.             }
  48.  
  49.             return health;
  50.         }
  51.  
  52.         private static double CalculateDamage(string demonData)
  53.         {
  54.             Regex damageRegex = new Regex(@"[+-]?\d+(\.\d+)?");
  55.             double damage = 0;
  56.             foreach (var number in damageRegex.Matches(demonData))
  57.             {
  58.                 damage += double.Parse(number.ToString());
  59.             }
  60.  
  61.             double multiplier = GetMultiplier(demonData);
  62.             damage *= multiplier;
  63.             return damage;
  64.         }
  65.  
  66.         private static double GetMultiplier(string demonData)
  67.         {
  68.             double multiplier = 1;
  69.             for (int i = 0; i < demonData.Length; i++)
  70.             {
  71.                 if (demonData[i] == '*')
  72.                 {
  73.                     multiplier *= 2;
  74.                 }
  75.                 else if (demonData[i] == '/')
  76.                 {
  77.                     multiplier /= 2;
  78.                 }
  79.             }
  80.  
  81.             return multiplier;
  82.         }
  83.     }
  84.  
  85.     class Demon
  86.     {
  87.         public string Name { get; set; }
  88.         public double Damage { get; set; }
  89.         public int Health { get; set; }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement