Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2017
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.78 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ArrayManipulator
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. int[] input = Console.ReadLine().Split().Select(int.Parse).ToArray();
  14.  
  15. string command = Console.ReadLine();
  16.  
  17. while (command != "end")
  18. {
  19. string[] commandArgs = command.Split();
  20.  
  21. string commandName = commandArgs[0];
  22.  
  23. switch (commandName)
  24. {
  25. case "exchange":
  26. {
  27. int index = int.Parse(commandArgs[1]);
  28.  
  29. if (index > input.Length)
  30. {
  31. Console.WriteLine("Invalid index");
  32. break;
  33. }
  34.  
  35. int[] reversed = Exchange(input, index);
  36.  
  37. Array.Copy(reversed, input, reversed.Length);
  38.  
  39. break;
  40. }
  41. case "max":
  42. {
  43. string position = commandArgs[1];
  44.  
  45. if (position == "odd")
  46. {
  47. string maxOddIndex = MaxOdd(input);
  48.  
  49. Console.WriteLine(maxOddIndex);
  50.  
  51. break;
  52. }
  53.  
  54. string maxEvenIndex = MaxEven(input);
  55.  
  56. Console.WriteLine(maxEvenIndex);
  57.  
  58. break;
  59. }
  60. case "min":
  61. {
  62. string position = commandArgs[1];
  63.  
  64. if (position == "odd")
  65. {
  66. string minOddIndex = MinOdd(input);
  67.  
  68. Console.WriteLine(minOddIndex);
  69.  
  70. break;
  71. }
  72.  
  73. string minEvenIndex = MinEven(input);
  74.  
  75. Console.WriteLine(minEvenIndex);
  76.  
  77. break;
  78. }
  79. case "first":
  80. {
  81. int count = int.Parse(commandArgs[1]);
  82.  
  83. if (count > input.Length)
  84. {
  85. Console.WriteLine("Invalid count");
  86. break;
  87. }
  88.  
  89. string type = commandArgs[2];
  90.  
  91. if (type == "odd")
  92. {
  93. int[] oddElements = GetFirstOddElements(input, count);
  94.  
  95. Console.WriteLine($"[{String.Join(", ", oddElements)}]");
  96.  
  97. break;
  98. }
  99.  
  100. int[] evenElements = GetFirstEvenElements(input, count);
  101.  
  102. Console.WriteLine($"[{String.Join(", ", evenElements)}]");
  103.  
  104. break;
  105. }
  106. case "last":
  107. {
  108. int count = int.Parse(commandArgs[1]);
  109.  
  110. if (count > input.Length)
  111. {
  112. Console.WriteLine("Invalid count");
  113. break;
  114. }
  115.  
  116. string type = commandArgs[2];
  117.  
  118. if (type == "odd")
  119. {
  120. int[] oddElements = GetLastOddElements(input, count);
  121.  
  122. Console.WriteLine($"[{String.Join(", ", oddElements)}]");
  123.  
  124. break;
  125. }
  126.  
  127. int[] evenElements = GetLastEvenElements(input, count);
  128.  
  129. Console.WriteLine($"[{String.Join(", ", evenElements)}]");
  130.  
  131. break;
  132. }
  133. }
  134.  
  135. command = Console.ReadLine();
  136. }
  137.  
  138. Console.WriteLine($"[{String.Join(", ", input)}]");
  139.  
  140. }
  141.  
  142. private static int[] GetLastEvenElements(int[] input, int count)
  143. {
  144. return input.Where(x => x % 2 == 0).Reverse().Take(count).Reverse().ToArray();
  145. }
  146.  
  147. private static int[] GetLastOddElements(int[] input, int count)
  148. {
  149. return input.Where(x => x % 2 != 0).Reverse().Take(count).Reverse().ToArray();
  150. }
  151.  
  152. private static int[] GetFirstEvenElements(int[] input, int count)
  153. {
  154. return input.Where(x => x % 2 == 0).Take(count).ToArray();
  155. }
  156.  
  157. private static int[] GetFirstOddElements(int[] input, int count)
  158. {
  159. return input.Where(x => x % 2 != 0).Take(count).ToArray();
  160. }
  161.  
  162. private static string MinEven(int[] input)
  163. {
  164. int[] evenElements = input.Where(x => x % 2 == 0).ToArray();
  165.  
  166. if (evenElements.Length == 0)
  167. {
  168. return "No matches";
  169. }
  170.  
  171. return Array.LastIndexOf(input, evenElements.Min()).ToString();
  172. }
  173.  
  174. private static string MinOdd(int[] input)
  175. {
  176. int[] oddElements = input.Where(x => x % 2 != 0).ToArray();
  177.  
  178. if (oddElements.Length == 0)
  179. {
  180. return "No matches";
  181. }
  182.  
  183. return Array.LastIndexOf(input, oddElements.Min()).ToString();
  184. }
  185.  
  186. private static string MaxEven(int[] input)
  187. {
  188. int[] evenElements = input.Where(x => x % 2 != 1).ToArray();
  189.  
  190. if (evenElements.Length == 0)
  191. {
  192. return "No matches";
  193. }
  194.  
  195. return Array.LastIndexOf(input, evenElements.Max()).ToString();
  196. }
  197.  
  198. private static string MaxOdd(int[] input)
  199. {
  200. int[] oddElements = input.Where(x => x % 2 != 0).ToArray();
  201.  
  202. if (oddElements.Length == 0)
  203. {
  204. return "No matches";
  205. }
  206.  
  207. return Array.LastIndexOf(input, oddElements.Max()).ToString();
  208. }
  209.  
  210. private static int[] Exchange(int[] input, int index)
  211. {
  212. int[] secondHalf = input.Skip(index + 1).ToArray();
  213. int[] firstHalf = input.Take(input.Length - secondHalf.Length).ToArray();
  214.  
  215. return secondHalf.Concat(firstHalf).ToArray();
  216. }
  217. }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement