Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text.RegularExpressions;
- namespace _3.Nether_Realms
- {
- class Program
- {
- static void Main(string[] args)
- {
- var dragons = "M3ph1st0**, Azazel"
- .Split(", ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
- .Select(Dragon.Parse)
- .OrderBy(a => a.Name)
- .ToArray();
- foreach (var dragon in dragons)
- {
- Console.WriteLine($"{dragon.Name}- {dragon.Health} health, {dragon.Damage} damage");
- }
- }
- }
- class Dragon
- {
- public string Name { get; set; }
- public decimal Health { get; set; }
- public decimal Damage { get; set; }
- public static object Parse (string dragonName)
- {
- var dragon = new Dragon();
- dragon.Name = dragonName;
- dragon.Health = CalculateHealth(dragonName);
- dragon.Damage = CalculateDamage(dragonName);
- return dragon;
- }
- private static decimal CalculateDamage (string dragonName)
- {
- var damageNumberPattern = @"[+-]?\d+(?:\.?\d+)?";
- var damageNumber = Regex.Matches(dragonName, damageNumberPattern);
- var damageSum = 0m;
- foreach (Match match in damageNumber)
- {
- damageSum += decimal.Parse(match.Value);
- }
- var modifiers = dragonName
- .Where(a => a == '*' || a == '/')
- .ToArray();
- foreach (var modifier in modifiers)
- {
- switch (modifier)
- {
- case '*':
- damageSum = 2;
- break;
- case '/':
- damageSum /= 2;
- break;
- }
- }
- return damageSum;
- }
- private static decimal CalculateHealth(string dragonName)
- {
- var healthpatern = @"[^0-9+\-*\/\.]";
- var healthChars = Regex.Matches(dragonName, healthpatern);
- var healthValues = new List<int>();
- foreach (Match match in healthChars)
- {
- Console.WriteLine(char.Parse(match.Value));
- }
- var health = healthValues.Sum();
- return health;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment