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); }
public void applyLeg(Leg leg) { if (Legs.Count >= 2) { //int index = Legs.OrderByDescending(x => x.Consumption).ToList().FindIndex(x => x.Consumption > leg.Consumption); int index = Legs.FindIndex(x => x.Consumption > leg.Consumption); if (index >= 0) { Legs[index] = leg; } } else { Legs.Add(leg); } }
public void AddLeg(Leg leg) { if (Legs == null) { Legs = new List <Leg>(); } var length = this.Legs.Count; if (length < 2) { Legs.Add(leg); } for (int i = 0; i < length; i++) { if (Legs[i].EnergyConsumption > leg.EnergyConsumption) { Legs.RemoveAt(i); Legs.Add(leg); } } }
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()); } //} } }