public static void Main() { var game = new Game(); var finalResult = new StringBuilder(); var line = Console.ReadLine(); while (line != "end") { var command = Command.Parse(line); switch (command.Name) { case "add": var unit = Unit.Parse(command.Arguments); var added = game.Add(unit); if (added) { finalResult.AppendLine(string.Format("SUCCESS: {0} added!", unit.Name)); } else { finalResult.AppendLine(string.Format("FAIL: {0} already exists!", unit.Name)); } break; case "remove": var name = command.Arguments[0]; var removed = game.Remove(name); if (removed) { finalResult.AppendLine(string.Format("SUCCESS: {0} removed!", name)); } else { finalResult.AppendLine(string.Format("FAIL: {0} could not be found!", name)); } break; case "find": var type = command.Arguments[0]; var found = game.FindByType(type); finalResult.AppendLine(string.Format("RESULT: {0}", string.Join(", ", found))); break; case "power": var mostPowerful = game.MostPowerful(int.Parse(command.Arguments[0])); finalResult.AppendLine(string.Format("RESULT: {0}", string.Join(", ", mostPowerful))); break; default: throw new InvalidOperationException(); } line = Console.ReadLine(); } Console.WriteLine(finalResult.ToString().Trim()); }