Beispiel #1
0
        static void Main(string[] args)
        {
            List <ISoldier>   allSoldiers = new List <ISoldier>();
            HashSet <Private> privates    = new HashSet <Private>();

            //string[] input = Console.ReadLine().Split();

            //while (input[0] != "End")
            //{
            //    switch (input[0])
            //    {
            //        case "Private":
            //            Private priv = new Private(int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4]));
            //            allSoldiers.Add(priv);
            //            privates.Add(priv);
            //            break;

            //        case "LeutenantGeneral":
            //            LieutenantGeneral lieutenantGeneral = new LieutenantGeneral
            //                (int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4]));

            //            input = input.Skip(5).ToArray();

            //            for (int i = 0; i < input.Length; i++)
            //            {
            //                Private privateToAdd = privates.First(p => p.Id == int.Parse(input[i]));
            //                lieutenantGeneral.Privates.Add(privateToAdd);
            //            }

            //            allSoldiers.Add(lieutenantGeneral);
            //            break;

            //        case "Engineer":
            //            Engineer engineer = new Engineer(int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4]), input[5]);

            //            if (engineer.Corps == "Airforces" || engineer.Corps == "Marines")
            //            {
            //                input = input.Skip(6).ToArray();

            //                for (int i = 0; i < input.Length; i += 2)
            //                {
            //                    Repair repair = new Repair(input[i], int.Parse(input[i + 1]));
            //                    engineer.Repairs.Add(repair);
            //                }

            //                allSoldiers.Add(engineer);
            //            }

            //            break;

            //        case "Commando":
            //            Commando commando = new Commando(int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4]), input[5]);

            //            if (commando.Corps == "Airforces" || commando.Corps == "Marines")
            //            {
            //                input = input.Skip(6).ToArray();

            //                for (int i = 0; i < input.Length; i++)
            //                {
            //                    Mission mission = new Mission(input[i], input[i + 1]);

            //                    if (mission.State == "inProgress" || mission.State == "Finished")
            //                    {
            //                        commando.Missions.Add(mission);
            //                    }
            //                }

            //                allSoldiers.Add(commando);
            //            }
            //            break;

            //        case "Spy":

            //            Spy spy = new Spy(int.Parse(input[1]), input[2], input[3], int.Parse(input[4]));
            //            allSoldiers.Add(spy);

            //            break;
            //    }


            //    input = Console.ReadLine().Split();

            //}

            //foreach (var soldier in allSoldiers)
            //{
            //    Console.WriteLine(soldier.ToString());
            //}

            while (true)
            {
                string[] data = Console.ReadLine().Split();

                string soldierType = data[0];

                data = data.Skip(1).ToArray();

                if (soldierType == "End")
                {
                    break;
                }

                switch (soldierType)
                {
                case "Private":

                    Private priv = new Private(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3]));

                    allSoldiers.Add(priv);
                    privates.Add(priv);

                    break;

                case "LieutenantGeneral":

                    LieutenantGeneral lieutenant = new LieutenantGeneral(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3]));

                    data = data.Skip(4).ToArray();

                    for (int i = 0; i < data.Length; i++)
                    {
                        Private privToAdd = privates.First(p => p.Id == int.Parse(data[i]));

                        lieutenant.Privates.Add(privToAdd);
                    }

                    allSoldiers.Add(lieutenant);

                    break;

                case "Engineer":

                    Engineer engineer = new Engineer(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3]), data[4]);

                    if (engineer.Corps == "Airforces" || engineer.Corps == "Marines")
                    {
                        data = data.Skip(5).ToArray();

                        for (int i = 0; i < data.Length; i += 2)
                        {
                            Repair repair = new Repair(data[i], int.Parse(data[i + 1]));
                            engineer.Repairs.Add(repair);
                        }

                        allSoldiers.Add(engineer);
                    }

                    break;

                case "Commando":

                    Commando commando = new Commando(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3]), data[4]);

                    if (commando.Corps == "Airforces" || commando.Corps == "Marines")
                    {
                        data = data.Skip(5).ToArray();

                        for (int i = 0; i < data.Length; i += 2)
                        {
                            Mission mission = new Mission(data[i], data[i + 1]);

                            if (mission.State == "Finished" || mission.State == "inProgress")
                            {
                                commando.Missions.Add(mission);
                            }
                        }

                        allSoldiers.Add(commando);
                    }

                    break;

                case "Spy":

                    Spy spy = new Spy(int.Parse(data[0]), data[1], data[2], int.Parse(data[3]));

                    allSoldiers.Add(spy);

                    break;
                }

                GC.Collect();
            }

            foreach (var soldier in allSoldiers)
            {
                Console.WriteLine(soldier.ToString());
            }
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Dictionary <string, ISoldier> soldiers = new Dictionary <string, ISoldier>();

            while (true)
            {
                string line = Console.ReadLine();

                if (line == "End")
                {
                    break;
                }

                string[] parts = line.Split();

                string type      = parts[0];
                string id        = parts[1];
                string firstName = parts[2];
                string lastName  = parts[3];

                if (type == nameof(Private))
                {
                    decimal salary = decimal.Parse(parts[4]);

                    soldiers[id] = new Private(id, firstName, lastName, salary);
                }
                else if (type == nameof(LieutenantGeneral))
                {
                    decimal salary = decimal.Parse(parts[4]);

                    ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < parts.Length; i++)
                    {
                        string privateId = parts[i];

                        if (!soldiers.ContainsKey(privateId))
                        {
                            continue;
                        }

                        lieutenantGeneral.AddPrivate((IPrivate)soldiers[privateId]);
                    }

                    soldiers[id] = lieutenantGeneral;
                }
                else if (type == nameof(Engineer))
                {
                    decimal salary = decimal.Parse(parts[4]);

                    bool IsCorpsValid = Enum.TryParse(parts[5], out Corps corps);

                    if (!IsCorpsValid)
                    {
                        continue;
                    }

                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string part = parts[i];

                        int hoursWorked = int.Parse(parts[i + 1]);

                        IRepair repair = new Repair(part, hoursWorked);

                        engineer.AddRepair(repair);
                    }

                    soldiers[id] = engineer;
                }
                else if (type == nameof(Commando))
                {
                    decimal salary = decimal.Parse(parts[4]);

                    bool IsCorpsValid = Enum.TryParse(parts[5], out Corps corps);

                    if (!IsCorpsValid)
                    {
                        continue;
                    }

                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string codeName = parts[i];

                        string state = parts[i + 1];

                        bool IsMissionValid = Enum.TryParse(state, out MissionState missionState);

                        if (!IsMissionValid)
                        {
                            continue;
                        }

                        IMission mission = new Mission(codeName, missionState);

                        commando.AddMission(mission);
                    }

                    soldiers[id] = commando;
                }
                else if (type == nameof(Spy))
                {
                    int codeNumber = int.Parse(parts[4]);

                    ISpy spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiers[id] = spy;
                }
            }

            foreach (var soldier in soldiers.Values)
            {
                Console.WriteLine(soldier);
            }
        }
Beispiel #3
0
        private string Parse(List <string> input)
        {
            var      soldierType = input[0];
            var      soldierId   = int.Parse(input[1]);
            var      firstName   = input[2];
            var      lastName    = input[3];
            ISoldier soldier     = null;

            if (soldierType == "Private")
            {
                var salary = decimal.Parse(input[4]);
                soldier = new Private(soldierId, firstName, lastName, salary);
            }
            else if (soldierType == "LieutenantGeneral")
            {
                var salary         = decimal.Parse(input[4]);
                var listOfPrivates = new List <IPrivate>();

                for (int i = 5; i < input.Count; i++)
                {
                    IPrivate currentPrivate = (IPrivate)soldiers[int.Parse(input[i])];
                    listOfPrivates.Add(currentPrivate);
                }

                soldier = new LieutenantGeneral(soldierId, firstName, lastName, salary, listOfPrivates);
            }
            else if (soldierType == "Engineer")
            {
                var salary  = decimal.Parse(input[4]);
                var isCorps = Enum.TryParse <Corps>(input[5], out Corps corps);

                if (!isCorps)
                {
                    throw new Exception();
                }

                var repairs = new List <IRepair>();

                for (int i = 6; i < input.Count; i += 2)
                {
                    var repairPart  = input[i];
                    var repairHours = int.Parse(input[i + 1]);
                    var repair      = new Repair(repairPart, repairHours);
                    repairs.Add(repair);
                }

                soldier = new Engineer(soldierId, firstName, lastName, salary, corps, repairs);
            }
            else if (soldierType == "Commando")
            {
                var salary  = decimal.Parse(input[4]);
                var isCorps = Enum.TryParse <Corps>(input[5], out Corps corps);

                if (!isCorps)
                {
                    throw new Exception();
                }

                var missions = new List <IMission>();

                for (int i = 6; i < input.Count; i += 2)
                {
                    var missionName = input[i];
                    var state       = input[i + 1];

                    var isState = Enum.TryParse <State>(state, out State finalState);

                    if (!isState)
                    {
                        continue;
                    }

                    var mission = new Mission(missionName, finalState);
                    missions.Add(mission);
                }

                soldier = new Commando(soldierId, firstName, lastName, salary, corps, missions);
            }
            else if (soldierType == "Spy")
            {
                var codeNumber = int.Parse(input[4]);
                soldier = new Spy(soldierId, firstName, lastName, codeNumber);
            }

            soldiers.Add(soldierId, soldier);
            return(soldier.ToString());
        }
Beispiel #4
0
        public static void Main()
        {
            List <Soldier> soldiers = new List <Soldier>();

            while (true)
            {
                string[] soldierInfo = Console.ReadLine().Split();
                if (soldierInfo[0] == "End")
                {
                    break;
                }

                int    id        = int.Parse(soldierInfo[1]);
                string firstName = soldierInfo[2];
                string lastName  = soldierInfo[3];
                switch (soldierInfo[0])
                {
                case "Private":
                    decimal salary   = decimal.Parse(soldierInfo[4]);
                    var     @private = new Private(id, firstName, lastName, salary);
                    soldiers.Add(@private);
                    break;

                case "LieutenantGeneral":
                    salary = decimal.Parse(soldierInfo[4]);
                    var            ids      = soldierInfo.Skip(5).Select(int.Parse);
                    List <Private> privates = new List <Private>();
                    foreach (var privateId in ids)
                    {
                        var soldier = soldiers.FirstOrDefault(s => s.Id == privateId);
                        if (soldier != null)
                        {
                            privates.Add(soldier as Private);
                        }
                    }

                    var general = new LieutenantGeneral(id, firstName, lastName, salary, privates);
                    soldiers.Add(general);
                    break;

                case "Engineer":
                    salary = decimal.Parse(soldierInfo[4]);
                    string corps   = soldierInfo[5];
                    var    repairs = new List <Repair>();
                    for (int i = 6; i < soldierInfo.Length; i += 2)
                    {
                        string partName    = soldierInfo[i];
                        int    hoursWorked = int.Parse(soldierInfo[i + 1]);
                        var    repair      = new Repair(partName, hoursWorked);
                        repairs.Add(repair);
                    }

                    try
                    {
                        var engineer = new Engineer(id, firstName, lastName, salary, corps, repairs);
                        soldiers.Add(engineer);
                    }
                    catch (ArgumentException)
                    {
                        continue;
                    }

                    break;

                case "Commando":
                    salary = decimal.Parse(soldierInfo[4]);
                    corps  = soldierInfo[5];
                    var missions = new List <Mission>();
                    for (int i = 6; i < soldierInfo.Length; i += 2)
                    {
                        string codeName = soldierInfo[i];
                        string state    = soldierInfo[i + 1];
                        try
                        {
                            var mission = new Mission(codeName, state);
                            missions.Add(mission);
                        }
                        catch (ArgumentException)
                        {
                            continue;
                        }
                    }

                    try
                    {
                        var commando = new Commando(id, firstName, lastName, salary, corps, missions);
                        soldiers.Add(commando);
                    }
                    catch (ArgumentException)
                    {
                        continue;
                    }

                    break;

                case "Spy":
                    int codeNumber = int.Parse(soldierInfo[4]);
                    var spy        = new Spy(id, firstName, lastName, codeNumber);
                    soldiers.Add(spy);
                    break;
                }
            }

            //soldiers.ForEach(Console.WriteLine);
            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier);
            }
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            ISoldier soldier = null;

            ICollection <ISoldier> soldiers = new List <ISoldier>();

            string input = Console.ReadLine();

            while (input != "End")
            {
                string[] token = input.Split();

                switch (token[0])
                {
                case "Private":
                    soldier = new Private(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]));
                    soldiers.Add(soldier);
                    break;

                case "LieutenantGeneral":
                    LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]));
                    for (int i = 5; i < token.Length; i++)
                    {
                        if (soldiers.FirstOrDefault(s => s.Id == int.Parse(token[i])) is IPrivate @private)
                        {
                            lieutenantGeneral.AddPrivate(@private);
                        }
                    }
                    soldier = lieutenantGeneral as ILieutenantGeneral;
                    soldiers.Add(soldier);
                    break;

                case "Engineer":
                    IEngineer engineer;
                    try
                    {
                        engineer = new Engineer(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]), token[5]);
                        soldier  = engineer as IEngineer;
                        for (int i = 6; i < token.Length - 1; i += 2)
                        {
                            IRepair repair = new Repair(token[i], int.Parse(token[i + 1])) as IRepair;
                            engineer.AddRepair(repair);
                        }
                        soldiers.Add(soldier);
                    }
                    catch (ArgumentException)
                    {
                        //Console.WriteLine(e.Message);
                        //throw;
                    }
                    break;

                case "Commando":
                    try
                    {
                        ICommando commando = new Commando(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]), token[5]);
                        soldier = commando as ISoldier;
                        for (int i = 6; i < token.Length - 1; i += 2)
                        {
                            IMission mission = new Mission(token[i], token[i + 1]) as IMission;
                            if (mission.State == "inProgress" || mission.State == "Finished")
                            {
                                commando.AddMission(mission);
                            }
                        }
                        soldiers.Add(soldier);
                    }
                    catch (System.ArgumentException)
                    {
                        //throw;
                    }

                    break;

                case "Spy":
                    ISpy spy = new Spy(int.Parse(token[1]), token[2], token[3], int.Parse(token[4].ToLower()));
                    soldier = spy as ISoldier;
                    soldiers.Add(soldier);
                    break;

                default:
                    break;
                }
                input = Console.ReadLine();
            }

            foreach (var @item in soldiers)
            {
                Console.WriteLine(@item);
            }
        }
Beispiel #6
0
        public static void Main()
        {
            Dictionary <string, ISoldier> soldiersById = new Dictionary <string, ISoldier>();

            while (true)
            {
                string line = Console.ReadLine();

                if (line == "End")
                {
                    break;
                }

                string[] parts = line.Split();

                string type      = parts[0];
                string id        = parts[1];
                string firstName = parts[2];
                string lastName  = parts[3];


                //•	Private: "Private <id> <firstName> <lastName> <salary>"
                if (type == nameof(Private))
                {
                    decimal salary = decimal.Parse(parts[4]);
                    soldiersById[id] = new Private(id, firstName, lastName, salary);
                }

                //•	LeutenantGeneral: "LieutenantGeneral <id> <firstName> <lastName> <salary>
                //<private1Id> <private2Id> … <privateNId>" where privateXId will always be an Id of a Private already received through the input.
                else if (type == nameof(LieutenantGeneral))
                {
                    decimal            salary           = decimal.Parse(parts[4]);
                    ILieutenantGeneral leutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);
                    for (int i = 5; i < parts.Length; i++)
                    {
                        string privateId = parts[i];
                        if (!soldiersById.ContainsKey(privateId))
                        {
                            continue;
                        }
                        leutenantGeneral.AddPrivate((IPrivate)soldiersById[privateId]); // иска IPrivate  и го кастваме
                    }



                    soldiersById[id] = leutenantGeneral;
                }

                //•	Engineer: "Engineer <id> <firstName> <lastName> <salary> <corps> <repair1Part> <repair1Hours> … <repairNPart> <repairNHours>" where repairXPart is the name of a repaired part and repairXHours the hours it took to repair it(the two parameters will always come paired).
                else if (type == nameof(Engineer))
                {
                    decimal salary       = decimal.Parse(parts[4]);
                    bool    isCorpsValid = Enum.TryParse(parts[5], out Corps corps); // после ползваме директно corps v инит на Енгинера

                    if (!isCorpsValid)
                    {
                        continue;
                    }
                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps); // corps go vzema ot enum 3 reda po nagore

                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string repairPart  = parts[i];
                        int    hoursWorked = int.Parse(parts[i + 1]);

                        IRepair repair = new Repair(repairPart, hoursWorked);

                        engineer.AddRepair(repair);
                    }
                    soldiersById[id] = engineer;
                }
                //•	Commando: "Commando <id> <firstName> <lastName> <salary> <corps>
                //<mission1CodeName>  <mission1state> … <missionNCodeName> <missionNstate>" a missions code name, description and state will always come together.
                else if (type == nameof(Commando))
                {
                    decimal salary       = decimal.Parse(parts[4]);
                    bool    isCorpsValid = Enum.TryParse(parts[5], out Corps corps);
                    if (!isCorpsValid)
                    {
                        continue;
                    }
                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);
                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string missionCodeName       = parts[i];
                        string missionState          = parts[i + 1];
                        bool   isMissIonStateIsValid = Enum.TryParse(missionState, out MissionState missState);
                        if (!isMissIonStateIsValid)
                        {
                            continue;
                        }

                        IMission mission = new Mission(missionCodeName, missState);
                        commando.AddMission(mission);
                    }
                    soldiersById[id] = commando;
                }
                //•	Spy: "Spy <id> <firstName> <lastName> <codeNumber>"
                else if (type == nameof(Spy))
                {
                    int  codeNumber = int.Parse(parts[4]);
                    ISpy spy        = new Spy(id, firstName, lastName, codeNumber);
                    soldiersById[id] = spy;
                }
            }

            foreach (var soldier in soldiersById.Values)
            {
                Console.WriteLine(soldier);
            }
        }
        public void Run()
        {
            Dictionary <int, ISoldier> soldiers = new Dictionary <int, ISoldier>();

            string line = Console.ReadLine();

            while (line != "End")
            {
                var tokens = line.Split(" ", StringSplitOptions.RemoveEmptyEntries);

                var   type      = tokens[0];
                var   id        = tokens[1];
                var   firstName = tokens[2];
                var   lastName  = tokens[3];
                var   salary    = 0m;
                Corps corp;

                switch (type)
                {
                case "Private":
                    salary = decimal.Parse(tokens[4]);

                    var privateSoldier = new Private(id, firstName, lastName, salary);

                    soldiers.Add(int.Parse(id), privateSoldier);
                    break;

                case "LieutenantGeneral":
                    salary = decimal.Parse(tokens[4]);

                    List <ISoldier> privates = new List <ISoldier>();

                    for (int i = 5; i < tokens.Length; i++)
                    {
                        var privateId = tokens[i];
                        privates.Add(soldiers[int.Parse(privateId)]);
                    }

                    var lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary, privates);

                    soldiers.Add(int.Parse(id), lieutenantGeneral);
                    break;

                case "Engineer":
                    salary = decimal.Parse(tokens[4]);

                    if (!Enum.TryParse(tokens[5], out corp))
                    {
                        continue;
                    }

                    List <IRepair> repairs = new List <IRepair>();

                    for (int i = 6; i < tokens.Length; i += 2)
                    {
                        var partName    = tokens[i];
                        var hoursWorked = int.Parse(tokens[i + 1]);

                        try
                        {
                            var repair = new Repair(partName, hoursWorked);

                            repairs.Add(repair);
                        }
                        catch (ArgumentException)
                        {
                        }
                    }

                    try
                    {
                        var engineer = new Engineer(id, firstName, lastName, salary, corp.ToString(), repairs);

                        soldiers.Add(int.Parse(id), engineer);
                    }
                    catch (ArgumentException)
                    {
                    }
                    break;

                case "Commando":
                    salary = decimal.Parse(tokens[4]);

                    if (!Enum.TryParse(tokens[5], out corp))
                    {
                        continue;
                    }

                    List <IMission> missions = new List <IMission>();

                    for (int i = 6; i < tokens.Length; i += 2)
                    {
                        var           codeName = tokens[i];
                        MissionStatus state;

                        if (!Enum.TryParse(tokens[i + 1], out state))
                        {
                            continue;
                        }

                        try
                        {
                            var mission = new Mission(codeName, state.ToString());
                            missions.Add(mission);
                        }
                        catch (ArgumentException)
                        {
                        }
                    }

                    try
                    {
                        var commando = new Commando(id, firstName, lastName, salary, corp.ToString(), missions);

                        soldiers.Add(int.Parse(id), commando);
                    }
                    catch (ArgumentException)
                    {
                    }
                    break;

                case "Spy":
                    var codeNumber = int.Parse(tokens[4]);

                    var spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiers.Add(int.Parse(id), spy);
                    break;
                }

                line = Console.ReadLine();
            }

            foreach (var soldier in soldiers.Values)
            {
                Console.WriteLine(soldier);
            }
        }
Beispiel #8
0
 public void AddMission(Mission missions)
 {
     Missions.Add(missions.CodeName, missions);
 }
        public static void Main()
        {
            var    privates = new Dictionary <int, Private>();
            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                var    cmdArgs     = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                var    soldierType = cmdArgs[0];
                int    id;
                string firstName;
                string lastName;
                double salary;
                Corps  corps;

                switch (soldierType)
                {
                case "Private":
                    id        = int.Parse(cmdArgs[1]);
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = double.Parse(cmdArgs[4]);

                    var privateSoldier = new Private(id, firstName, lastName, salary);
                    privates.Add(id, privateSoldier);
                    Console.WriteLine(privateSoldier);
                    break;

                case "LieutenantGeneral":
                    id        = int.Parse(cmdArgs[1]);
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = double.Parse(cmdArgs[4]);
                    var leutenantGeneral = new LeutenantGeneral(id, firstName, lastName, salary);

                    if (cmdArgs.Length >= 5)
                    {
                        for (var i = 5; i < cmdArgs.Length; i++)
                        {
                            var privateId = int.Parse(cmdArgs[i]);
                            privateSoldier = privates[privateId];

                            leutenantGeneral.Privates.Add(privateSoldier);
                        }
                    }
                    Console.WriteLine(leutenantGeneral);
                    break;

                case "Engineer":
                    id        = int.Parse(cmdArgs[1]);
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = double.Parse(cmdArgs[4]);

                    if (Enum.TryParse(cmdArgs[5], out corps))
                    {
                        var engineer = new Engineer(id, firstName, lastName, salary, corps);

                        if (cmdArgs.Length >= 6)
                        {
                            for (var i = 6; i < cmdArgs.Length; i += 2)
                            {
                                var repairPartName = cmdArgs[i];
                                var repairHours    = int.Parse(cmdArgs[i + 1]);

                                var repair = new Repair(repairPartName, repairHours);
                                engineer.Repairs.Add(repair);
                            }
                        }
                        Console.WriteLine(engineer);
                    }
                    break;

                case "Commando":
                    id        = int.Parse(cmdArgs[1]);
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = double.Parse(cmdArgs[4]);

                    if (Enum.TryParse(cmdArgs[5], out corps))
                    {
                        var commando = new Commando(id, firstName, lastName, salary, corps);

                        if (cmdArgs.Length >= 6)
                        {
                            for (var i = 6; i < cmdArgs.Length; i += 2)
                            {
                                if (Enum.TryParse(cmdArgs[i + 1], out MissionState missionState))
                                {
                                    var missionName = cmdArgs[i];
                                    var mission     = new Mission(missionName, missionState);
                                    commando.Missions.Add(mission);
                                }
                            }
                            Console.WriteLine(commando);
                        }
                    }
                    break;

                case "Spy":
                    id        = int.Parse(cmdArgs[1]);
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    var codeNumber = int.Parse(cmdArgs[4]);

                    var spy = new Spy(id, firstName, lastName, codeNumber);
                    Console.WriteLine(spy);
                    break;

                default:
                    throw new ArgumentException("Invalid Type of Soldier!");
                }
            }
        }
Beispiel #10
0
        static void Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

            Dictionary <string, ISoldier> soldiersByID = new Dictionary <string, ISoldier>();

            string command;

            while ((command = Console.ReadLine()) != "End")
            {
                string[] commandArgs = command.Split();

                string soldierType = commandArgs[0];
                string id          = commandArgs[1];
                string firstName   = commandArgs[2];
                string lastName    = commandArgs[3];

                if (soldierType == typeof(Private).Name)
                {
                    decimal salary = decimal.Parse(commandArgs[4]);
                    soldiersByID[id] = new Private(id, firstName, lastName, salary);
                }
                else if (soldierType == typeof(LieutenantGeneral).Name)
                {
                    decimal salary = decimal.Parse(commandArgs[4]);

                    ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);


                    for (int i = 5; i < commandArgs.Length; i++)
                    {
                        string privateId = commandArgs[i];

                        lieutenantGeneral.AddPrivate((IPrivate)soldiersByID[privateId]);
                    }

                    soldiersByID[id] = lieutenantGeneral;
                }
                else if (soldierType == typeof(Engineer).Name)
                {
                    //•	Engineer:
                    // Name: < firstName > < lastName > Id: < id > Salary: < salary > Corps: < corps >Repairs:
                    // < repair1 ToString() >
                    // < repair2 ToString() >
                    //< repairN ToString() >

                    decimal salary = decimal.Parse(commandArgs[4]);

                    bool isCorpsValid = Enum.TryParse(commandArgs[5], out SoldierCorpEnum corps);

                    if (!isCorpsValid)
                    {
                        continue;
                    }

                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < commandArgs.Length; i += 2)
                    {
                        string part        = commandArgs[i];
                        int    hoursWorked = int.Parse(commandArgs[i + 1]);

                        IRepair repair = new Repair(part, hoursWorked);

                        engineer.AddRepair(repair);
                    }

                    soldiersByID[id] = engineer;
                }
                else if (soldierType == typeof(Commando).Name)
                {
                    decimal salary = decimal.Parse(commandArgs[4]);

                    bool isCorpsValid = Enum.TryParse(commandArgs[5], out SoldierCorpEnum corps);

                    if (!isCorpsValid)
                    {
                        continue;
                    }

                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < commandArgs.Length; i += 2)
                    {
                        string codeName = commandArgs[i];
                        string state    = commandArgs[i + 1];

                        bool isMissionValid = Enum.TryParse(state, out MissionStateEnum missionState);

                        if (!isMissionValid)
                        {
                            continue;
                        }

                        IMission mission = new Mission(codeName, missionState);

                        commando.AddMision(mission);
                    }
                    soldiersByID[id] = commando;
                }
                else if (soldierType == typeof(Spy).Name)
                {
                    // •	Spy:
                    //Name: < firstName > < lastName > Id: < id >
                    //Code Number: < codeNumber >

                    int codeNumber = int.Parse(commandArgs[4]);

                    ISpy spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiersByID[id] = spy;
                }
            }

            foreach (var soldierr in soldiersByID.Values)
            {
                Console.WriteLine(soldierr);
            }
        }
Beispiel #11
0
        static void Main(string[] args)
        {
            var soldiers = new Dictionary <int, ISoldier>();

            var input = string.Empty;

            while ((input = Console.ReadLine()) != "End")
            {
                var inputArgs = input.Split();

                var type      = inputArgs[0];
                var id        = int.Parse(inputArgs[1]);
                var firstName = inputArgs[2];
                var lastName  = inputArgs[3];

                if (type == "Spy")
                {
                    var codeNumber = int.Parse(inputArgs[4]);

                    var spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiers.Add(id, spy);
                }
                else
                {
                    var salary = decimal.Parse(inputArgs[4]);

                    switch (type)
                    {
                    case "Private":
                    {
                        var privateSolider = new Private(id, firstName, lastName, salary);

                        soldiers.Add(id, privateSolider);
                        break;
                    }

                    case "LieutenantGeneral":
                    {
                        var idNums = inputArgs.Skip(5)
                                     .Select(int.Parse)
                                     .ToArray();

                        IList <IPrivate> privates = idNums.Select(idInt => (IPrivate)soldiers[idInt]).ToList();
                        var lieutenantGeneral     = new LieutenantGeneral(id, firstName, lastName, salary, privates);

                        soldiers.Add(id, lieutenantGeneral);
                        break;
                    }

                    default:
                    {
                        var crops = inputArgs[5];

                        if (crops == "Airforces" || crops == "Marines")
                        {
                            switch (type)
                            {
                            case "Engineer":
                            {
                                ICollection <IRepair> repairs = new List <IRepair>();

                                for (var i = 6; i < inputArgs.Length; i += 2)
                                {
                                    var name   = inputArgs[i];
                                    var hours  = int.Parse(inputArgs[i + 1]);
                                    var repair = new Repair(name, hours);
                                    repairs.Add(repair);
                                }

                                var engineer = new Engineer(id, firstName, lastName, salary, crops, repairs);

                                soldiers.Add(id, engineer);
                                break;
                            }

                            case "Commando":
                            {
                                ICollection <IMission> missions = new List <IMission>();

                                for (var i = 6; i < inputArgs.Length; i += 2)
                                {
                                    var name  = inputArgs[i];
                                    var state = inputArgs[i + 1];
                                    if (state == "inProgress" || state == "Finished")
                                    {
                                        var mission = new Mission(name, state);
                                        missions.Add(mission);
                                    }
                                }

                                var commando = new Commando(id, firstName, lastName, salary, crops, missions);

                                soldiers.Add(id, commando);
                                break;
                            }
                            }
                        }

                        break;
                    }
                    }
                }
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier.Value);
            }
        }
        static void Main(string[] args)
        {
            var input = Console.ReadLine().Split(" ").ToArray();

            List <Soldier> soldiers = new List <Soldier>();
            List <Private> privates = new List <Private>();

            while (input[0] != "End")
            {
                switch (input[0])
                {
                case "Private":
                {
                    int    id        = int.Parse(input[1]);
                    string firstName = input[2];
                    string lastName  = input[3];
                    double salary    = double.Parse(input[4]);

                    Private soldier = new Private(id, firstName, lastName, salary);
                    soldiers.Add(soldier);
                    privates.Add(soldier);

                    break;
                }

                case "Commando":
                {
                    int    id        = int.Parse(input[1]);
                    string firstName = input[2];
                    string lastName  = input[3];
                    double salary    = double.Parse(input[4]);
                    string cops      = input[5];

                    if (cops == "Airforces" || cops == "Marines")
                    {
                        Commando soldier = new Commando(id, firstName, lastName, salary, cops);

                        for (int i = 6; i < input.Length; i += 2)
                        {
                            if (input[i + 1] == "inProgress" || input[i + 1] == "finished")
                            {
                                Mission mission = new Mission(input[i], input[i + 1]);

                                soldier.Missions.Add(mission);
                            }
                        }
                        soldiers.Add(soldier);
                    }


                    break;
                }

                case "Spy":
                {
                    int    id         = int.Parse(input[1]);
                    string firstName  = input[2];
                    string lastName   = input[3];
                    int    codeNumber = int.Parse(input[4]);

                    Spy spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiers.Add(spy);

                    break;
                }

                case "LieutenantGeneral":
                {
                    int    id        = int.Parse(input[1]);
                    string firstName = input[2];
                    string lastName  = input[3];
                    double salary    = double.Parse(input[4]);


                    LeutenantGeneral soldier = new LeutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < input.Length; i++)
                    {
                        Private solderToAdd = privates.FirstOrDefault(s => s.Id == int.Parse(input[i]));


                        soldier.Privates.Add(solderToAdd);
                    }
                    soldiers.Add(soldier);

                    break;
                }

                case "Engineer":
                {
                    int    id        = int.Parse(input[1]);
                    string firstName = input[2];
                    string lastName  = input[3];
                    double salary    = double.Parse(input[4]);
                    string cops      = input[5];

                    Engineer soldier = new Engineer(id, firstName, lastName, salary, cops);

                    for (int i = 6; i < input.Length; i += 2)
                    {
                        Repear repear = new Repear(input[i], int.Parse(input[i + 1]));

                        soldier.Repears.Add(repear);
                    }
                    soldiers.Add(soldier);

                    break;
                }
                }

                input = Console.ReadLine().Split(" ").ToArray();
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier.ToString());
            }
        }
Beispiel #13
0
 public void CompleteMission(Mission mission)
 {
     mission.State = "Finished";
 }
Beispiel #14
0
        static void Main(string[] args)
        {
            var soldiers = new Dictionary <int, ISoldier>();

            while (true)
            {
                string[] input = Console.ReadLine().Split();
                if (input[0] == "End")
                {
                    break;
                }

                int    id        = int.Parse(input[1]);
                string firstName = input[2];
                string lastName  = input[3];


                if (input[0] == "Private")
                {
                    decimal salary = decimal.Parse(input[4]);
                    soldiers.Add(id, new Private(id, firstName, lastName, salary));
                }
                else if (input[0] == "LieutenantGeneral")
                {
                    decimal salary  = decimal.Parse(input[4]);
                    var     general = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < input.Length; i++)
                    {
                        Private @private = (Private)soldiers[int.Parse(input[i])];
                        general.AddPrivate(@private);
                    }

                    soldiers.Add(id, general);
                }
                else if (input[0] == "Commando")
                {
                    decimal salary = decimal.Parse(input[4]);
                    string  corps  = input[5];
                    if (corps != "Airforces" && corps != "Marines")
                    {
                        continue;
                    }

                    var commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < input.Length; i += 2)
                    {
                        var mission = new Mission(input[i], input[i + 1]);
                        commando.AddMission(mission);
                    }

                    soldiers.Add(id, commando);
                }
                else if (input[0] == "Engineer")
                {
                    decimal salary = decimal.Parse(input[4]);
                    string  corps  = input[5];
                    if (corps != "Airforces" && corps != "Marines")
                    {
                        continue;
                    }

                    var engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < input.Length; i += 2)
                    {
                        var repair = new Repair(input[i], int.Parse(input[i + 1]));
                        engineer.AddRepair(repair);
                    }

                    soldiers.Add(id, engineer);
                }
                else if (input[0] == "Spy")
                {
                    int codeNumber = int.Parse(input[4]);
                    soldiers.Add(id, new Spy(id, firstName, lastName, codeNumber));
                }
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier.Value);
            }
        }
Beispiel #15
0
        static void Main(string[] args)
        {
            var soldiers = new List <ISoldier>();

            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                var tokens = input
                             .Split(' ', StringSplitOptions.RemoveEmptyEntries);

                var soldireType = tokens[0];
                var id          = int.Parse(tokens[1]);
                var firstName   = tokens[2];
                var lastName    = tokens[3];
                var sallary     = double.Parse(tokens[4]);

                ISoldier soldier = null;

                try
                {
                    switch (soldireType)
                    {
                    case "Private":
                        soldier = new Private(id, firstName, lastName, sallary);
                        break;

                    case "LeutenantGeneral":
                        var lueitenant = new LeutenantGeneral(id, firstName, lastName, sallary);

                        for (int i = 5; i < tokens.Length; i++)
                        {
                            var privateId = int.Parse(tokens[i]);

                            ISoldier @private = soldiers.FirstOrDefault(p => p.Id == privateId);
                            lueitenant.AddPrivate(@private);
                        }
                        soldier = lueitenant;

                        break;

                    case "Engineer":
                        var engineerCorps = tokens[5];
                        var engineer      = new Engineer(id, firstName, lastName, sallary, engineerCorps);

                        for (int i = 6; i < tokens.Length; i++)
                        {
                            var partName    = tokens[i];
                            var hoursWorked = int.Parse(tokens[++i]);

                            IRepair repair = new Repair(partName, hoursWorked);
                            engineer.AddRepair(repair);
                        }

                        soldier = engineer;
                        break;

                    case "Commando":
                        var commandoCorps = tokens[5];
                        var commando      = new Commando(id, firstName, lastName, sallary, commandoCorps);

                        for (int i = 6; i < tokens.Length; i++)
                        {
                            var codeName     = tokens[i];
                            var missionState = tokens[++i];
                            try
                            {
                                IMission mission = new Mission(codeName, missionState);
                                commando.AddMission(mission);
                            }
                            catch { }
                        }

                        soldier = commando;
                        break;

                    case "Spy":
                        int codeNumber = (int)sallary;
                        soldier = new Spy(id, firstName, lastName, codeNumber);
                        break;

                    default:
                        throw new ArgumentException("Invalid soldier type!");
                    }

                    soldiers.Add(soldier);
                }
                catch { }
            }

            foreach (var s in soldiers)
            {
                Console.WriteLine(s);
            }
        }
        static void Main(string[] args)
        {
            string[] line = Console.ReadLine().Split();

            var dictOfPrivates = new Dictionary <int, Private>();
            var soldiers       = new List <ISoldier>();

            while (line[0] != "End")
            {
                if (line[0] == "Private")
                {
                    var @private = new Private(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]));
                    dictOfPrivates.Add(int.Parse(line[1]), @private);
                    soldiers.Add(@private);
                }
                else if (line[0] == "LeutenantGeneral")
                {
                    var leutenantGeneral = new LeutenantGeneral(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]));
                    leutenantGeneral.Privates = new List <Private>();
                    for (int i = 5; i < line.Length; i++)
                    {
                        leutenantGeneral.Privates.Add(dictOfPrivates[int.Parse(line[i])]);
                    }

                    soldiers.Add(leutenantGeneral);
                }
                else if (line[0] == "Engineer")
                {
                    var engineer = new Engineer(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]), line[5]);
                    for (int i = 6; i < line.Length; i += 2)
                    {
                        var repair = new Repair(int.Parse(line[i]), line[i + 1]);
                        engineer.Repairs.Add(repair);
                    }

                    soldiers.Add(engineer);
                }
                else if (line[0] == "Commando")
                {
                    var commando = new Commando(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]), line[5]);
                    commando.Missions = new List <Mission>();
                    for (int i = 6; i < line.Length; i += 2)
                    {
                        var mission = new Mission(line[i], line[i + 1]);
                        commando.Missions.Add(mission);
                    }

                    soldiers.Add(commando);
                }
                else if (line[0] == "Spy")
                {
                    var spy = new Spy(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]), int.Parse(line[5]));

                    soldiers.Add(spy);
                }

                line = Console.ReadLine().Split();
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier);
            }
        }
Beispiel #17
0
        static void Main(string[] args)
        {
            var    soldiers = new List <ISoldier>();
            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                try
                {
                    var soldierInput = input.Split();
                    var id           = int.Parse(soldierInput[1]);
                    var firstName    = soldierInput[2];
                    var lastName     = soldierInput[3];
                    var sodierType   = soldierInput[0];
                    var salary       = decimal.Parse(soldierInput[4]);

                    ISoldier sodier = null;
                    switch (sodierType)
                    {
                    case "Private":
                        sodier = new Private(id, firstName, lastName, salary);
                        ;
                        break;

                    case "Spy":
                        sodier = new Spy(id, firstName, lastName, int.Parse(soldierInput[4]));

                        break;

                    case "LeutenantGeneral":
                        var general = new LeutenantGeneral(id, firstName, lastName, salary);
                        for (int i = 5; i < soldierInput.Length; i++)
                        {
                            int      iid       = int.Parse(soldierInput[i]);
                            ISoldier bbSoldier = soldiers.First(x => x.Id == iid);
                            general.AddPrivate(bbSoldier);
                        }

                        sodier = general;
                        break;

                    case "Engineer":
                        var eng = new Engineer(id, firstName, lastName, salary, soldierInput[5]);
                        for (int i = 6; i < soldierInput.Length; i++)
                        {
                            try
                            {
                                string  partName   = soldierInput[i];
                                int     hourWorked = int.Parse(soldierInput[++i]);
                                IRepair repeir     = new Repair(partName, hourWorked);
                                eng.AddRepiar(repeir);
                            }
                            catch { }
                        }
                        sodier = eng;
                        break;

                    case "Commando":

                        var commando = new Commando(id, firstName, lastName, salary, soldierInput[5]);
                        for (int i = 6; i < soldierInput.Length; i++)
                        {
                            try
                            {
                                string   codeName = soldierInput[i];
                                string   state    = soldierInput[++i];
                                IMission mission  = new Mission(codeName, state);
                                commando.AddMision(mission);
                            }
                            catch
                            {
                            }
                        }
                        sodier = commando;
                        break;

                    default: throw new ArgumentException();
                    }
                    soldiers.Add(sodier);
                }
                catch { }
            }
            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier);
            }
        }
Beispiel #18
0
        public static void Main()
        {
            List <ISoldier> soldiers = new List <ISoldier>();

            while (true)
            {
                string cmd = Console.ReadLine();
                if (cmd == "End")
                {
                    break;
                }

                string[] cmdArgs = cmd.Split(' ', StringSplitOptions.RemoveEmptyEntries);
                switch (cmdArgs[0])
                {
                case "Private":
                    var @private = new Private(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]));
                    soldiers.Add(@private);
                    break;

                case "LieutenantGeneral":
                    var ltGeneral = new LieutenantGeneral(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]));
                    for (int i = 5; i < cmdArgs.Length; i++)
                    {
                        int privateId = int.Parse(cmdArgs[i]);
                        ltGeneral.AddPrivate((Private)soldiers.Find(s => s.GetType().Name == "Private" && s.Id == privateId));
                    }

                    soldiers.Add(ltGeneral);

                    break;

                case "Engineer":
                    try
                    {
                        var engineer = new Engineer(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]), cmdArgs[5]);
                        for (int i = 6; i < cmdArgs.Length; i += 2)
                        {
                            var repair = new Repair(cmdArgs[i], int.Parse(cmdArgs[i + 1]));
                            engineer.AddRepair(repair);
                        }

                        soldiers.Add(engineer);
                    }
                    catch (ArgumentException)
                    {
                        continue;
                    }

                    break;

                case "Commando":
                    try
                    {
                        var comando = new Comando(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]), cmdArgs[5]);
                        for (int i = 6; i < cmdArgs.Length; i += 2)
                        {
                            try
                            {
                                var mission = new Mission(cmdArgs[i], cmdArgs[i + 1]);
                                comando.AddMission(mission);
                            }
                            catch (ArgumentException)
                            {
                                continue;
                            }
                        }

                        soldiers.Add(comando);
                    }
                    catch (ArgumentException)
                    {
                        continue;
                    }

                    break;

                case "Spy":
                    var spy = new Spy(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], int.Parse(cmdArgs[4]));
                    soldiers.Add(spy);
                    break;
                }
            }

            soldiers.ForEach(s => Console.WriteLine(s));
        }
Beispiel #19
0
        public string Read(string[] args)
        {
            string soldierType = args[0];
            int    id          = int.Parse(args[1]);
            string firstName   = args[2];
            string lastName    = args[3];

            ISoldier soldier = null;

            if (soldierType == "Private")
            {
                decimal salary = decimal.Parse(args[4]);
                soldier = new Private(id, firstName, lastName, salary);
            }
            else if (soldierType == "LieutenantGeneral")
            {
                decimal salary   = decimal.Parse(args[4]);
                var     privates = new Dictionary <int, IPrivate>();

                for (int i = 5; i < args.Length; i++)
                {
                    int soldierId      = int.Parse(args[i]);
                    var currentSoldier = (IPrivate)soldiers[soldierId];
                    privates.Add(soldierId, currentSoldier);
                }

                soldier = new LieutenantGeneral(id, firstName, lastName, salary, privates);
            }
            else if (soldierType == "Engineer")
            {
                decimal salary       = decimal.Parse(args[4]);
                bool    isValidCorps = Enum.TryParse <Corps>(args[5], out Corps corps);

                if (!isValidCorps)
                {
                    throw new Exception();
                }

                ICollection <IRepair> repairs = new List <IRepair>();

                for (int i = 6; i < args.Length; i += 2)
                {
                    string  currentName = args[i];
                    int     hours       = int.Parse(args[i + 1]);
                    IRepair repair      = new Repair(currentName, hours);
                    repairs.Add(repair);
                }

                soldier = new Engineer(id, firstName, lastName, salary, corps, repairs);
            }
            else if (soldierType == "Commando")
            {
                decimal salary       = decimal.Parse(args[4]);
                bool    isValidCorps = Enum.TryParse <Corps>(args[5], out Corps corps);

                if (!isValidCorps)
                {
                    throw new Exception();
                }

                ICollection <IMission> missions = new List <IMission>();

                for (int i = 6; i < args.Length; i += 2)
                {
                    string missionName  = args[i];
                    string missionState = args[i + 1];

                    bool isValidMissionState = Enum.TryParse <State>(missionState, out State stateResult);

                    if (!isValidMissionState)
                    {
                        continue;
                    }

                    IMission mission = new Mission(missionName, stateResult);
                    missions.Add(mission);
                }

                soldier = new Commando(id, firstName, lastName, salary, corps, missions);
            }
            else if (soldierType == "Spy")
            {
                int codeNumber = int.Parse(args[4]);
                soldier = new Spy(id, firstName, lastName, codeNumber);
            }

            soldiers.Add(id, soldier);

            return(soldier.ToString());
        }