Advertisement
_CodeBehind

Realms

Feb 16th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.45 KB | None | 0 0
  1. namespace NetherRealm
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.     using System.Text.RegularExpressions;
  7.  
  8.     public class Demon
  9.     {
  10.         public string Name { get; set; }
  11.         public long Health { get; set; }
  12.         public decimal Damage { get; set; }
  13.     }
  14.  
  15.     class DamonRealm
  16.     {
  17.         static void Main()
  18.         {
  19.             var demons = Console.ReadLine().Split(new char[] { ' ', ',', '\t' }
  20.             , StringSplitOptions.RemoveEmptyEntries);
  21.  
  22.             List<Demon> Demons = new List<Demon>();
  23.             var sortedDemons = Demons.OrderBy(x => x.Name);
  24.  
  25.             for (int i = 0; i < demons.Length; i++)
  26.             {
  27.                 Demon currentDemon = new Demon
  28.                 {
  29.                     Name = demons[i],
  30.                     Health = GetHealth(demons[i]),
  31.                     Damage = GetDamage(demons[i])
  32.                 };
  33.  
  34.                 Demons.Add(currentDemon);
  35.             }
  36.  
  37.             foreach (var demon in sortedDemons)
  38.             {
  39.                 Console.WriteLine($"{demon.Name} - {demon.Health} health, {demon.Damage:F2} damage");
  40.             }
  41.         }
  42.  
  43.         private static decimal GetDamage(string demonName)
  44.         {
  45.             decimal damage = 0M;
  46.             decimal counterMultiplaiers = 0M;
  47.             decimal counterDividers = 0M;
  48.  
  49.             string pattern = @"[+-]?\d+(\.\d+)?";
  50.  
  51.             foreach (var charachter in demonName)
  52.             {
  53.                 if (charachter == '*')
  54.                 {
  55.                     counterMultiplaiers++;
  56.                 }
  57.                 if (charachter == '/')
  58.                 {
  59.                     counterDividers++;
  60.                 }
  61.             }
  62.  
  63.             foreach (Match m in Regex.Matches(demonName, pattern))
  64.             {
  65.                 damage += decimal.Parse(m.Value);
  66.             }
  67.  
  68.             if (counterMultiplaiers != 0)
  69.             {
  70.                 for (int i = 0; i < counterMultiplaiers; i++)
  71.                 {
  72.                     if (counterMultiplaiers >= 0)
  73.                     {
  74.                         damage *= 2;
  75.                     }
  76.                 }
  77.             }
  78.  
  79.             if (counterDividers != 0)
  80.             {
  81.                 for (int i = 0; i < counterDividers; i++)
  82.                 {
  83.                     if (counterDividers > 0)
  84.                     {
  85.                         damage /= 2;
  86.                     }
  87.                 }
  88.             }
  89.             return damage;
  90.         }
  91.  
  92.         private static long GetHealth(string demonName)
  93.         {
  94.            
  95.             long health = 0;
  96.             var currentName = demonName;
  97.             for (int i = 0; i < demonName.Length; i++)
  98.             {
  99.                 bool invalidChars = InvalidChars(demonName, i);
  100.                 if (!invalidChars)
  101.                 {
  102.                     health += demonName[i];
  103.                 }
  104.             }
  105.             return health;
  106.         }
  107.  
  108.         private static bool InvalidChars(string demonName, int i)
  109.         {
  110.             return (demonName[i] == '*' || demonName[i] == '.' || demonName[i] == '/' || demonName[i] == '+' || demonName[i] == '-' ||
  111.                 demonName[i] == '1' || demonName[i] == '2' || demonName[i] == '3' || demonName[i] == '4' || demonName[i] == '5'
  112.                 || demonName[i] == '6' || demonName[i] == '7' || demonName[i] == '8' || demonName[i] == '9' || demonName[i] == '0');
  113.         }
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement