Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Numerics;
- using System.Text;
- using System.Threading.Tasks;
- namespace Jarvis
- {
- class Arms
- {
- public int EnergyConsumption { get; set; }
- public int ArmReachDistance { get; set; }
- public int CountOfFingers { get; set; }
- public DateTime MomentOfCreation { get; set; }
- }
- class Legs
- {
- public int EnergyConsumption { get; set; }
- public int Strength { get; set; }
- public int Speed { get; set; }
- public DateTime MomentOfCreation { get; set; }
- }
- class Torso
- {
- public int EnergyConsumption { get; set; }
- public double ProcessorSizeInCentimeters { get; set; }
- public string HousingMaterial { get; set; }
- }
- class Head
- {
- public int EnergyConsumption { get; set; }
- public int IQ { get; set; }
- public string SkinMaterial { get; set; }
- }
- class Robot
- {
- public Arms[] Arms { get; set; }
- public Legs[] Legs { get; set; }
- public Torso Torso { get; set; }
- public Head Head { get; set; }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Robot jarvis = new Robot();
- jarvis.Arms = new Arms[2];
- jarvis.Legs = new Legs[2];
- //jarvis = InitialRobot(jarvis);
- ulong power = ulong.Parse(Console.ReadLine());
- jarvis = MakeRobot(jarvis);
- PrintResult(jarvis, power);
- }
- private static void PrintResult(Robot jarvis, ulong power)
- {
- if (jarvis.Head == null || jarvis.Torso == null || jarvis.Legs[0] == null || jarvis.Legs[1] == null || jarvis.Arms[0] == null || jarvis.Arms[1] == null)
- {
- Console.WriteLine("We need more parts!");
- }
- else
- {
- BigInteger totalEnergyNeeded = jarvis.Head.EnergyConsumption + jarvis.Torso.EnergyConsumption + jarvis.Arms[0].EnergyConsumption + jarvis.Arms[1].EnergyConsumption
- + jarvis.Legs[0].EnergyConsumption + jarvis.Legs[1].EnergyConsumption;
- if (totalEnergyNeeded > power)
- {
- Console.WriteLine("We need more power!");
- }
- else
- {
- Console.WriteLine("Jarvis:");
- Console.WriteLine("#Head:");
- Console.WriteLine($"###Energy consumption: {jarvis.Head.EnergyConsumption}");
- Console.WriteLine($"###IQ: {jarvis.Head.IQ}");
- Console.WriteLine($"###Skin material: {jarvis.Head.SkinMaterial}");
- Console.WriteLine("#Torso:");
- Console.WriteLine($"###Energy consumption: {jarvis.Torso.EnergyConsumption}");
- Console.WriteLine($"###Processor size: {jarvis.Torso.ProcessorSizeInCentimeters:f1}");
- Console.WriteLine($"###Corpus material: {jarvis.Torso.HousingMaterial}");
- foreach (var arm in jarvis.Arms.OrderBy(encon => encon.EnergyConsumption))
- {
- Console.WriteLine($"#Arm:");
- Console.WriteLine($"###Energy consumption: {arm.EnergyConsumption}");
- Console.WriteLine($"###Reach: {arm.ArmReachDistance}");
- Console.WriteLine($"###Fingers: {arm.CountOfFingers}");
- }
- foreach (var leg in jarvis.Legs.OrderBy(encon => encon.EnergyConsumption))
- {
- Console.WriteLine($"#Leg:");
- Console.WriteLine($"###Energy consumption: {leg.EnergyConsumption}");
- Console.WriteLine($"###Strength: {leg.Strength}");
- Console.WriteLine($"###Speed: {leg.Speed}");
- }
- //Console.WriteLine("#Arm:");
- //Console.WriteLine("#Arm:");
- //Console.WriteLine($"###Energy consumption: {jarvis.Arms[1].EnergyConsumption}");
- //Console.WriteLine($"###Reach: {jarvis.Arms[1].ArmReachDistance}");
- //Console.WriteLine($"###Fingers: {jarvis.Arms[1].CountOfFingers}");
- //Console.WriteLine($"Leg:");
- //Console.WriteLine($"###Energy consumption: {jarvis.Legs[0].EnergyConsumption}");
- //Console.WriteLine($"###Strength: {jarvis.Legs[0].Strength}");
- //Console.WriteLine($"###Sppel: {jarvis.Legs[1].Speed}");
- }
- }
- }
- private static Robot InitialRobot(Robot jarvis)
- {
- ////Arms initialArms = new Arms();
- ////initialArms.ArmReachDistance = 0;
- ////initialArms.EnergyConsumption = int.MaxValue;
- ////initialArms.CountOfFingers = 0;
- ////initialArms.MomentOfCreation = DateTime.Now;
- jarvis.Arms = new Arms[2];
- ////jarvis.Arms[0] = initialArms;
- ////jarvis.Arms[1] = initialArms;
- //Legs initialLegs = new Legs();
- ////initialLegs.EnergyConsumption = int.MaxValue;
- ////initialLegs.Speed = 0;
- ////initialLegs.Strength = 0;
- jarvis.Legs = new Legs[2];
- ////jarvis.Legs[0] = initialLegs;
- ////jarvis.Legs[1] = initialLegs;
- //Head head = new Head();
- ////head.EnergyConsumption = int.MaxValue;
- //jarvis.Head = head;
- //Torso torso = new Torso();
- ////torso.EnergyConsumption = int.MaxValue;
- //jarvis.Torso = torso;
- return jarvis;
- }
- private static Robot MakeRobot(Robot jarvis)
- {
- do
- {
- string input = Console.ReadLine();
- string[] splittedLine = input.Split();
- if (input.ToLower() == "assemble!")
- {
- break;
- }
- if (splittedLine[0].ToLower() == "arm")
- {
- Arms currentArm = new Arms();
- currentArm = GetArms(splittedLine, currentArm);
- if (jarvis.Arms[0] == null || jarvis.Arms[1] == null)
- {
- if (jarvis.Arms[0] == null)
- {
- jarvis.Arms[0] = currentArm;
- }
- else
- {
- jarvis.Arms[1] = currentArm;
- }
- }
- else if ((currentArm.EnergyConsumption < jarvis.Arms[0].EnergyConsumption && currentArm.EnergyConsumption < jarvis.Arms[1].EnergyConsumption) || currentArm.EnergyConsumption == jarvis.Arms[0].EnergyConsumption && (currentArm.CountOfFingers > jarvis.Arms[0].CountOfFingers || currentArm.CountOfFingers > jarvis.Arms[0].CountOfFingers))
- {
- if (jarvis.Arms[0].MomentOfCreation < jarvis.Arms[1].MomentOfCreation)
- {
- jarvis.Arms[0] = currentArm;
- }
- else
- {
- jarvis.Arms[1] = currentArm;
- }
- }
- else if (currentArm.EnergyConsumption < jarvis.Arms[0].EnergyConsumption)
- {
- jarvis.Arms[0] = currentArm;
- }
- else if (currentArm.EnergyConsumption < jarvis.Arms[1].EnergyConsumption)
- {
- jarvis.Arms[1] = currentArm;
- }
- }
- else if (splittedLine[0].ToLower() == "leg")
- {
- Legs currentLeg = new Legs();
- currentLeg = GetLegs(splittedLine, currentLeg);
- if (jarvis.Legs[0] == null || jarvis.Legs[1] == null)
- {
- if (jarvis.Legs[0] == null)
- {
- jarvis.Legs[0] = currentLeg;
- }
- else
- {
- jarvis.Legs[1] = currentLeg;
- }
- }
- else if (currentLeg.EnergyConsumption < jarvis.Legs[0].EnergyConsumption && currentLeg.EnergyConsumption < jarvis.Legs[1].EnergyConsumption)
- {
- if (jarvis.Legs[0].MomentOfCreation < jarvis.Legs[1].MomentOfCreation)
- {
- jarvis.Legs[0] = currentLeg;
- }
- else
- {
- jarvis.Legs[1] = currentLeg;
- }
- }
- else if (currentLeg.EnergyConsumption < jarvis.Legs[0].EnergyConsumption)
- {
- jarvis.Legs[0] = currentLeg;
- }
- else if (currentLeg.EnergyConsumption < jarvis.Legs[1].EnergyConsumption)
- {
- jarvis.Legs[1] = currentLeg;
- }
- }
- else if (splittedLine[0].ToLower() == "torso")
- {
- Torso currentTorso = new Torso();
- currentTorso = GetTorso(splittedLine, currentTorso);
- if (jarvis.Torso == null)
- {
- jarvis.Torso = currentTorso;
- }
- else if (currentTorso.EnergyConsumption < jarvis.Torso.EnergyConsumption)
- {
- jarvis.Torso = currentTorso;
- }
- }
- else if (splittedLine[0].ToLower() == "head")
- {
- Head currentHead = new Head();
- currentHead = GetHead(splittedLine, currentHead);
- if (jarvis.Head == null)
- {
- jarvis.Head = currentHead;
- }
- else if (currentHead.EnergyConsumption < jarvis.Head.EnergyConsumption)
- {
- jarvis.Head = currentHead;
- }
- }
- } while (true);
- return jarvis;
- }
- private static Head GetHead(string[] splittedLine, Head currentHead)
- {
- currentHead.EnergyConsumption = int.Parse(splittedLine[1]);
- currentHead.IQ = int.Parse(splittedLine[2]);
- currentHead.SkinMaterial = splittedLine[3];
- return currentHead;
- }
- private static Torso GetTorso(string[] splittedLine, Torso currentTorso)
- {
- currentTorso.EnergyConsumption = int.Parse(splittedLine[1]);
- currentTorso.ProcessorSizeInCentimeters = double.Parse(splittedLine[2]);
- currentTorso.HousingMaterial = splittedLine[3];
- return currentTorso;
- }
- private static Legs GetLegs(string[] splittedLine, Legs currentLeg)
- {
- currentLeg.EnergyConsumption = int.Parse(splittedLine[1]);
- currentLeg.Strength = int.Parse(splittedLine[2]);
- currentLeg.Speed = int.Parse(splittedLine[3]);
- currentLeg.MomentOfCreation = DateTime.Now;
- return currentLeg;
- }
- private static Arms GetArms(string[] splittedLine, Arms currentArm)
- {
- currentArm.EnergyConsumption = int.Parse(splittedLine[1]);
- currentArm.ArmReachDistance = int.Parse(splittedLine[2]);
- currentArm.CountOfFingers = int.Parse(splittedLine[3]);
- currentArm.MomentOfCreation = DateTime.Now;
- return currentArm;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement