using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace LD_24.Code { public static class TaskUtils { public static Dictionary FindMostHealthByClass(List actors) { Dictionary mostHealth = new Dictionary(); foreach (var actor in actors) { if (mostHealth.ContainsKey(actor.Class)) { mostHealth[actor.Class] = Math.Max(mostHealth[actor.Class], actor.Health); } else { mostHealth.Add(actor.Class, actor.Health); } } return mostHealth; } public static List FindAllClasses(List actors) { List result = new List(); foreach (var actor in actors) { if (!result.Contains(actor.Class)) { result.Add(actor.Class); } } return result; } public static List FindAllRaces(List actors) { List races = new List(); foreach (var actor in actors) { if (!races.Contains(actor.Race)) { races.Add(actor.Race); } } return races; } public static Tuple, List> FindMissingActors(List actors) { var races = FindAllRaces(actors); var missingHeroes = races; var missingNPCs = new List(races); foreach (var actor in actors) { if (actor is Hero) { missingHeroes.Remove(actor.Race); } else if (actor is NPC) { missingNPCs.Remove(actor.Race); } } return Tuple.Create(missingHeroes, missingNPCs); } public static List FilterMostHealthByClass(List actors) { List filtered = new List(); var mostHealths = FindMostHealthByClass(actors); foreach (var actor in actors) { if (mostHealths[actor.Class] == actor.Health) { filtered.Add(actor); } } return filtered; } public static List FilterHeroesByIntellect(List actors, int minIntellect) { List filtered = new List(); foreach (var actor in actors) { if (actor is Hero && (actor as Hero).Intellect > minIntellect) { filtered.Add(actor as Hero); } } return filtered; } public static List FilterNPCsByAttack(List actors, int maxAttack) { List filtered = new List(); foreach (var actor in actors) { if (actor is NPC && actor.Attack < maxAttack) { filtered.Add(actor as NPC); } } return filtered; } } }