Beispiel #1
0
        static void Main()
        {
            long   maxEnergy = long.Parse(Console.ReadLine());
            Jarvis robot     = new Jarvis(maxEnergy);

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

                if (input[0] == "Assemble!")
                {
                    break;
                }

                switch (input[0])
                {
                case "Head":
                {
                    var part = new Head(int.Parse(input[1]), int.Parse(input[2]), input[3]);
                    robot.applyHead(part);
                    break;
                }

                case "Torso":
                {
                    var part = new Torso(int.Parse(input[1]), double.Parse(input[2]), input[3]);
                    robot.applyTorso(part);
                    break;
                }

                case "Arm":
                {
                    var part = new Arm(int.Parse(input[1]), int.Parse(input[2]), int.Parse(input[3]));
                    robot.applyArm(part);
                    break;
                }

                case "Leg":
                {
                    var part = new Leg(int.Parse(input[1]), int.Parse(input[2]), int.Parse(input[3]));
                    robot.applyLeg(part);
                    break;
                }
                }
            }

            Console.WriteLine(robot);
        }
Beispiel #2
0
 public void applyArm(Arm arm)
 {
     if (Arms.Count >= 2)
     {
         //int index = Arms.OrderByDescending(x => x.Consumption).ToList().FindIndex(x => x.Consumption > arm.Consumption);
         int index = Arms.FindIndex(x => x.Consumption > arm.Consumption);
         if (index >= 0)
         {
             Arms[index] = arm;
         }
     }
     else
     {
         Arms.Add(arm);
     }
 }
Beispiel #3
0
        public void AddArm(Arm arm)
        {
            if (Arms == null)
            {
                Arms = new List <Arm>();
            }

            var length = this.Arms.Count;

            if (length < 2)
            {
                Arms.Add(arm);
            }

            for (int i = 0; i < length; i++)
            {
                if (Arms[i].EnergyConsumption > arm.EnergyConsumption)
                {
                    Arms.RemoveAt(i);
                    Arms.Add(arm);
                }
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            var maxEnergyConsumption = long.Parse(Console.ReadLine());

            var jarvis = new Robot();

            jarvis.MaxEnergyConsumption = maxEnergyConsumption;

            var line = Console.ReadLine();

            while (line != "Assemble!")
            {
                var tokens = line.Split();

                var part = tokens[0];
                var energyConsumption = int.Parse(tokens[1]);

                switch (part)
                {
                case "Head":
                {
                    var iq           = int.Parse(tokens[2]);
                    var skinMaterial = tokens[3];

                    var head = new Head
                    {
                        EnergyConsumption = energyConsumption,
                        Iq           = iq,
                        SkinMaterial = skinMaterial
                    };

                    jarvis.AddHead(head);
                }
                break;

                case "Torso":
                {
                    var processorSize   = double.Parse(tokens[2]);
                    var housingMaterial = tokens[3];

                    var torso = new Torso();
                    torso.EnergyConsumption          = energyConsumption;
                    torso.ProcessorSizeInCentimeters = processorSize;
                    torso.HousingMaterial            = housingMaterial;

                    jarvis.AddTorso(torso);
                }
                break;

                case "Arm":
                {
                    var armReachDistance = int.Parse(tokens[2]);
                    var countOfFingers   = int.Parse(tokens[3]);

                    var arm = new Arm();
                    arm.EnergyConsumption = energyConsumption;
                    arm.ArmReachDistance  = armReachDistance;
                    arm.CountOfFingers    = countOfFingers;

                    jarvis.AddArm(arm);
                }
                break;

                case "Leg":
                {
                    var strength = int.Parse(tokens[2]);
                    var speed    = int.Parse(tokens[3]);

                    var leg = new Leg();
                    leg.EnergyConsumption = energyConsumption;
                    leg.Strength          = strength;
                    leg.Speed             = speed;

                    jarvis.AddLeg(leg);
                }
                break;
                }

                line = Console.ReadLine();
            }

            Console.WriteLine(jarvis);
        }
        static void Main(string[] args)
        {
            decimal energyCapacity = decimal.Parse(Console.ReadLine());

            string input = Console.ReadLine();

            Robot Jarvis = new Robot();

            while (input != "Assemble!")
            {
                string[] inputArr = input.Split(' ');

                //Creating the head
                if (inputArr[0] == "Head")
                {
                    if (Jarvis.RobotHead == null)
                    {
                        Jarvis.RobotHead = new Head();
                        Jarvis.RobotHead.EnergyConsumption = decimal.Parse(inputArr[1]);;
                        Jarvis.RobotHead.IQ           = decimal.Parse(inputArr[2]);;
                        Jarvis.RobotHead.SkinMaterial = inputArr[3];
                    }
                    else
                    {
                        if (Jarvis.RobotHead.EnergyConsumption > decimal.Parse(inputArr[1]))
                        {
                            Jarvis.RobotHead.EnergyConsumption = decimal.Parse(inputArr[1]);;
                            Jarvis.RobotHead.IQ           = decimal.Parse(inputArr[2]);;
                            Jarvis.RobotHead.SkinMaterial = inputArr[3];
                        }
                    }
                }

                //Creating the torso
                if (inputArr[0] == "Torso")
                {
                    if (Jarvis.RobotTorso == null)
                    {
                        Jarvis.RobotTorso = new Torso();
                        Jarvis.RobotTorso.EnergyConsumption = decimal.Parse(inputArr[1]);;
                        Jarvis.RobotTorso.ProcessorSize     = double.Parse(inputArr[2]);;
                        Jarvis.RobotTorso.HousingMaterial   = inputArr[3];
                    }
                    else
                    {
                        if (Jarvis.RobotTorso.EnergyConsumption > decimal.Parse(inputArr[1]))
                        {
                            Jarvis.RobotTorso.EnergyConsumption = decimal.Parse(inputArr[1]);;
                            Jarvis.RobotTorso.ProcessorSize     = double.Parse(inputArr[2]);;
                            Jarvis.RobotTorso.HousingMaterial   = inputArr[3];
                        }
                    }
                }

                //Creating the arms
                if (inputArr[0] == "Arm")
                {
                    Arm arm = new Arm();
                    arm.EnergyConsumption = decimal.Parse(inputArr[1]);
                    arm.ReachDistance     = decimal.Parse(inputArr[2]);
                    arm.Fingers           = decimal.Parse(inputArr[3]);

                    if (Jarvis.RobotArms == null)
                    {
                        Jarvis.RobotArms = new List <Arm>();
                    }

                    if (Jarvis.RobotArms.Count < 2)
                    {
                        Jarvis.RobotArms.Add(arm);
                    }
                    else
                    {
                        if (Jarvis.RobotArms[0].EnergyConsumption > arm.EnergyConsumption || Jarvis.RobotArms[1].EnergyConsumption > arm.EnergyConsumption)
                        {
                            if (Jarvis.RobotArms[0].EnergyConsumption == Jarvis.RobotArms[1].EnergyConsumption)
                            {
                                if (Jarvis.RobotArms[0].EnergyConsumption > arm.EnergyConsumption)
                                {
                                    Jarvis.RobotArms[0] = arm;
                                }
                            }
                            else
                            {
                                Jarvis.RobotArms    = Jarvis.RobotArms.OrderByDescending(x => x.EnergyConsumption).ToList();
                                Jarvis.RobotArms[0] = arm;
                            }
                        }
                    }
                }

                //Creating the legs
                if (inputArr[0] == "Leg")
                {
                    Leg leg = new Leg();
                    leg.EnergyConsumption = decimal.Parse(inputArr[1]);
                    leg.Strength          = decimal.Parse(inputArr[2]);
                    leg.Speed             = decimal.Parse(inputArr[3]);

                    if (Jarvis.RobotLegs == null)
                    {
                        Jarvis.RobotLegs = new List <Leg>();
                    }

                    if (Jarvis.RobotLegs.Count < 2)
                    {
                        Jarvis.RobotLegs.Add(leg);
                    }
                    else
                    {
                        if (Jarvis.RobotLegs[0].EnergyConsumption > leg.EnergyConsumption || Jarvis.RobotLegs[1].EnergyConsumption > leg.EnergyConsumption)
                        {
                            if (Jarvis.RobotLegs[0].EnergyConsumption == Jarvis.RobotLegs[1].EnergyConsumption)
                            {
                                if (Jarvis.RobotLegs[0].EnergyConsumption > leg.EnergyConsumption)
                                {
                                    Jarvis.RobotLegs[0] = leg;
                                }
                            }
                            else
                            {
                                Jarvis.RobotLegs    = Jarvis.RobotLegs.OrderByDescending(x => x.EnergyConsumption).ToList();
                                Jarvis.RobotLegs[0] = leg;
                            }
                        }
                    }
                }

                input = Console.ReadLine();
            }

            //if (Jarvis.RobotHead == null || Jarvis.RobotTorso == null || Jarvis.RobotArms.Count < 2 || Jarvis.RobotLegs.Count < 2)
            //{
            //	Console.WriteLine("We need more parts!");
            //}
            //else
            {
                //decimal TotalEnergyConsumption = 0l;
                //TotalEnergyConsumption = Jarvis.RobotHead.EnergyConsumption + Jarvis.RobotHead.EnergyConsumption + (decimal)Jarvis.RobotArms.Sum(x => x.EnergyConsumption) + (decimal)Jarvis.RobotLegs.Sum(x => x.EnergyConsumption);

                //if (TotalEnergyConsumption > energyCapacity)
                //{
                //	Console.WriteLine("We need more power!");
                //}
                //else
                //{
                Console.WriteLine("Jarvis:");
                Console.WriteLine(Jarvis.RobotHead.ToString());
                Console.WriteLine(Jarvis.RobotTorso.ToString());
                foreach (var arm in Jarvis.RobotArms.OrderBy(x => x.EnergyConsumption))
                {
                    Console.WriteLine(arm.ToString());
                }
                foreach (var leg in Jarvis.RobotLegs.OrderBy(x => x.EnergyConsumption))
                {
                    Console.WriteLine(leg.ToString());
                }
                //}
            }
        }