Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.01 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Numerics;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace Jarvis
  9. {
  10. class Arms
  11. {
  12. public int EnergyConsumption { get; set; }
  13. public int ArmReachDistance { get; set; }
  14. public int CountOfFingers { get; set; }
  15. public DateTime MomentOfCreation { get; set; }
  16. }
  17.  
  18. class Legs
  19. {
  20. public int EnergyConsumption { get; set; }
  21. public int Strength { get; set; }
  22. public int Speed { get; set; }
  23. public DateTime MomentOfCreation { get; set; }
  24. }
  25.  
  26. class Torso
  27. {
  28. public int EnergyConsumption { get; set; }
  29. public double ProcessorSizeInCentimeters { get; set; }
  30. public string HousingMaterial { get; set; }
  31. }
  32.  
  33. class Head
  34. {
  35. public int EnergyConsumption { get; set; }
  36. public int IQ { get; set; }
  37. public string SkinMaterial { get; set; }
  38. }
  39.  
  40. class Robot
  41. {
  42. public Arms[] Arms { get; set; }
  43. public Legs[] Legs { get; set; }
  44. public Torso Torso { get; set; }
  45. public Head Head { get; set; }
  46. }
  47. class Program
  48. {
  49. static void Main(string[] args)
  50. {
  51. Robot jarvis = new Robot();
  52. jarvis.Arms = new Arms[2];
  53. jarvis.Legs = new Legs[2];
  54. //jarvis = InitialRobot(jarvis);
  55. ulong power = ulong.Parse(Console.ReadLine());
  56. jarvis = MakeRobot(jarvis);
  57. PrintResult(jarvis, power);
  58. }
  59.  
  60. private static void PrintResult(Robot jarvis, ulong power)
  61. {
  62.  
  63.  
  64. if (jarvis.Head == null || jarvis.Torso == null || jarvis.Legs[0] == null || jarvis.Legs[1] == null || jarvis.Arms[0] == null || jarvis.Arms[1] == null)
  65. {
  66. Console.WriteLine("We need more parts!");
  67. }
  68. else
  69. {
  70. BigInteger totalEnergyNeeded = jarvis.Head.EnergyConsumption + jarvis.Torso.EnergyConsumption + jarvis.Arms[0].EnergyConsumption + jarvis.Arms[1].EnergyConsumption
  71. + jarvis.Legs[0].EnergyConsumption + jarvis.Legs[1].EnergyConsumption;
  72. if (totalEnergyNeeded > power)
  73. {
  74. Console.WriteLine("We need more power!");
  75. }
  76.  
  77. else
  78. {
  79. Console.WriteLine("Jarvis:");
  80. Console.WriteLine("#Head:");
  81. Console.WriteLine($"###Energy consumption: {jarvis.Head.EnergyConsumption}");
  82. Console.WriteLine($"###IQ: {jarvis.Head.IQ}");
  83. Console.WriteLine($"###Skin material: {jarvis.Head.SkinMaterial}");
  84. Console.WriteLine("#Torso:");
  85. Console.WriteLine($"###Energy consumption: {jarvis.Torso.EnergyConsumption}");
  86. Console.WriteLine($"###Processor size: {jarvis.Torso.ProcessorSizeInCentimeters:f1}");
  87. Console.WriteLine($"###Corpus material: {jarvis.Torso.HousingMaterial}");
  88. foreach (var arm in jarvis.Arms.OrderBy(encon => encon.EnergyConsumption))
  89. {
  90. Console.WriteLine($"#Arm:");
  91. Console.WriteLine($"###Energy consumption: {arm.EnergyConsumption}");
  92. Console.WriteLine($"###Reach: {arm.ArmReachDistance}");
  93. Console.WriteLine($"###Fingers: {arm.CountOfFingers}");
  94. }
  95. foreach (var leg in jarvis.Legs.OrderBy(encon => encon.EnergyConsumption))
  96. {
  97. Console.WriteLine($"#Leg:");
  98. Console.WriteLine($"###Energy consumption: {leg.EnergyConsumption}");
  99. Console.WriteLine($"###Strength: {leg.Strength}");
  100. Console.WriteLine($"###Speed: {leg.Speed}");
  101. }
  102. //Console.WriteLine("#Arm:");
  103. //Console.WriteLine("#Arm:");
  104. //Console.WriteLine($"###Energy consumption: {jarvis.Arms[1].EnergyConsumption}");
  105. //Console.WriteLine($"###Reach: {jarvis.Arms[1].ArmReachDistance}");
  106. //Console.WriteLine($"###Fingers: {jarvis.Arms[1].CountOfFingers}");
  107. //Console.WriteLine($"Leg:");
  108. //Console.WriteLine($"###Energy consumption: {jarvis.Legs[0].EnergyConsumption}");
  109. //Console.WriteLine($"###Strength: {jarvis.Legs[0].Strength}");
  110. //Console.WriteLine($"###Sppel: {jarvis.Legs[1].Speed}");
  111. }
  112.  
  113. }
  114. }
  115.  
  116. private static Robot InitialRobot(Robot jarvis)
  117. {
  118. ////Arms initialArms = new Arms();
  119. ////initialArms.ArmReachDistance = 0;
  120. ////initialArms.EnergyConsumption = int.MaxValue;
  121. ////initialArms.CountOfFingers = 0;
  122. ////initialArms.MomentOfCreation = DateTime.Now;
  123. jarvis.Arms = new Arms[2];
  124. ////jarvis.Arms[0] = initialArms;
  125. ////jarvis.Arms[1] = initialArms;
  126. //Legs initialLegs = new Legs();
  127. ////initialLegs.EnergyConsumption = int.MaxValue;
  128. ////initialLegs.Speed = 0;
  129. ////initialLegs.Strength = 0;
  130. jarvis.Legs = new Legs[2];
  131. ////jarvis.Legs[0] = initialLegs;
  132. ////jarvis.Legs[1] = initialLegs;
  133. //Head head = new Head();
  134. ////head.EnergyConsumption = int.MaxValue;
  135. //jarvis.Head = head;
  136. //Torso torso = new Torso();
  137. ////torso.EnergyConsumption = int.MaxValue;
  138. //jarvis.Torso = torso;
  139. return jarvis;
  140. }
  141.  
  142. private static Robot MakeRobot(Robot jarvis)
  143. {
  144.  
  145. do
  146. {
  147. string input = Console.ReadLine();
  148. string[] splittedLine = input.Split();
  149. if (input.ToLower() == "assemble!")
  150. {
  151. break;
  152. }
  153. if (splittedLine[0].ToLower() == "arm")
  154. {
  155. Arms currentArm = new Arms();
  156. currentArm = GetArms(splittedLine, currentArm);
  157. if (jarvis.Arms[0] == null || jarvis.Arms[1] == null)
  158. {
  159. if (jarvis.Arms[0] == null)
  160. {
  161. jarvis.Arms[0] = currentArm;
  162. }
  163. else
  164. {
  165. jarvis.Arms[1] = currentArm;
  166. }
  167. }
  168. 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))
  169. {
  170. if (jarvis.Arms[0].MomentOfCreation < jarvis.Arms[1].MomentOfCreation)
  171. {
  172. jarvis.Arms[0] = currentArm;
  173. }
  174. else
  175. {
  176. jarvis.Arms[1] = currentArm;
  177. }
  178. }
  179. else if (currentArm.EnergyConsumption < jarvis.Arms[0].EnergyConsumption)
  180. {
  181. jarvis.Arms[0] = currentArm;
  182. }
  183. else if (currentArm.EnergyConsumption < jarvis.Arms[1].EnergyConsumption)
  184. {
  185. jarvis.Arms[1] = currentArm;
  186. }
  187.  
  188. }
  189. else if (splittedLine[0].ToLower() == "leg")
  190. {
  191. Legs currentLeg = new Legs();
  192. currentLeg = GetLegs(splittedLine, currentLeg);
  193. if (jarvis.Legs[0] == null || jarvis.Legs[1] == null)
  194. {
  195. if (jarvis.Legs[0] == null)
  196. {
  197. jarvis.Legs[0] = currentLeg;
  198. }
  199. else
  200. {
  201. jarvis.Legs[1] = currentLeg;
  202. }
  203. }
  204. else if (currentLeg.EnergyConsumption < jarvis.Legs[0].EnergyConsumption && currentLeg.EnergyConsumption < jarvis.Legs[1].EnergyConsumption)
  205. {
  206. if (jarvis.Legs[0].MomentOfCreation < jarvis.Legs[1].MomentOfCreation)
  207. {
  208. jarvis.Legs[0] = currentLeg;
  209. }
  210. else
  211. {
  212. jarvis.Legs[1] = currentLeg;
  213. }
  214. }
  215. else if (currentLeg.EnergyConsumption < jarvis.Legs[0].EnergyConsumption)
  216. {
  217. jarvis.Legs[0] = currentLeg;
  218. }
  219. else if (currentLeg.EnergyConsumption < jarvis.Legs[1].EnergyConsumption)
  220. {
  221. jarvis.Legs[1] = currentLeg;
  222. }
  223. }
  224. else if (splittedLine[0].ToLower() == "torso")
  225. {
  226. Torso currentTorso = new Torso();
  227. currentTorso = GetTorso(splittedLine, currentTorso);
  228. if (jarvis.Torso == null)
  229. {
  230. jarvis.Torso = currentTorso;
  231. }
  232. else if (currentTorso.EnergyConsumption < jarvis.Torso.EnergyConsumption)
  233. {
  234. jarvis.Torso = currentTorso;
  235. }
  236. }
  237. else if (splittedLine[0].ToLower() == "head")
  238. {
  239. Head currentHead = new Head();
  240. currentHead = GetHead(splittedLine, currentHead);
  241. if (jarvis.Head == null)
  242. {
  243. jarvis.Head = currentHead;
  244. }
  245. else if (currentHead.EnergyConsumption < jarvis.Head.EnergyConsumption)
  246. {
  247. jarvis.Head = currentHead;
  248. }
  249. }
  250.  
  251. } while (true);
  252. return jarvis;
  253. }
  254.  
  255. private static Head GetHead(string[] splittedLine, Head currentHead)
  256. {
  257. currentHead.EnergyConsumption = int.Parse(splittedLine[1]);
  258. currentHead.IQ = int.Parse(splittedLine[2]);
  259. currentHead.SkinMaterial = splittedLine[3];
  260. return currentHead;
  261. }
  262.  
  263. private static Torso GetTorso(string[] splittedLine, Torso currentTorso)
  264. {
  265. currentTorso.EnergyConsumption = int.Parse(splittedLine[1]);
  266. currentTorso.ProcessorSizeInCentimeters = double.Parse(splittedLine[2]);
  267. currentTorso.HousingMaterial = splittedLine[3];
  268. return currentTorso;
  269. }
  270.  
  271. private static Legs GetLegs(string[] splittedLine, Legs currentLeg)
  272. {
  273. currentLeg.EnergyConsumption = int.Parse(splittedLine[1]);
  274. currentLeg.Strength = int.Parse(splittedLine[2]);
  275. currentLeg.Speed = int.Parse(splittedLine[3]);
  276. currentLeg.MomentOfCreation = DateTime.Now;
  277. return currentLeg;
  278. }
  279.  
  280. private static Arms GetArms(string[] splittedLine, Arms currentArm)
  281. {
  282. currentArm.EnergyConsumption = int.Parse(splittedLine[1]);
  283. currentArm.ArmReachDistance = int.Parse(splittedLine[2]);
  284. currentArm.CountOfFingers = int.Parse(splittedLine[3]);
  285. currentArm.MomentOfCreation = DateTime.Now;
  286. return currentArm;
  287. }
  288.  
  289. }
  290. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement