Advertisement
social1986

Untitled

Oct 31st, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace _02.Ladybugs
  5. {
  6. class Program
  7. {
  8. static void Main()
  9. {
  10. var sizeOfField = new int[int.Parse(Console.ReadLine())];
  11.  
  12. var positionOfLadybugs = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  13.  
  14. for (int i = 0; i < positionOfLadybugs.Length; i++)
  15. {
  16. var index = positionOfLadybugs[i];
  17. if (IsValid(index, sizeOfField))
  18. {
  19. sizeOfField[index] = 1;
  20. }
  21. }
  22.  
  23. while (true)
  24. {
  25. var commandArgs = Console.ReadLine().Split(' ');
  26.  
  27. if (commandArgs[0] == "end")
  28. {
  29. break;
  30. }
  31.  
  32. var positionOfBug = int.Parse(commandArgs[0]);
  33. var command = commandArgs[1];
  34. var FlyingLentgth = int.Parse(commandArgs[2]);
  35. if (command == "right")
  36. {
  37. MoovingRight(positionOfBug, FlyingLentgth, sizeOfField);
  38. }
  39. else if (command == "left")
  40. {
  41. MoovingLeft(positionOfBug, FlyingLentgth, sizeOfField);
  42. }
  43. }
  44. Console.WriteLine(string.Join(" ", sizeOfField));
  45. }
  46.  
  47. public static bool IsValid(int index, int[] sizeOfField)
  48. {
  49. if (index > sizeOfField.Length - 1 || index < 0)
  50. {
  51. return false;
  52. }
  53. return true;
  54. }
  55.  
  56. public static bool IsEmpty(int[] sizeOfField, int index)
  57. {
  58. if (sizeOfField[index] != 0)
  59. {
  60. return false;
  61. }
  62. return true;
  63. }
  64.  
  65. public static int[] MoovingLeft(int positionOfBug, int flyLength, int[] sizeOfField)
  66. {
  67. var positionToBeMoved = positionOfBug - flyLength;
  68.  
  69. if (!IsValid(positionOfBug, sizeOfField))
  70. {
  71. return sizeOfField;
  72. }
  73.  
  74. if (flyLength == 0)
  75. {
  76. return sizeOfField;
  77. }
  78.  
  79. if (!IsValid(positionToBeMoved, sizeOfField))
  80. {
  81. sizeOfField[positionOfBug] = 0;
  82. return sizeOfField;
  83. }
  84.  
  85. while (true)
  86. {
  87. if (IsEmpty(sizeOfField, positionToBeMoved))
  88. {
  89. sizeOfField[positionToBeMoved] = sizeOfField[positionOfBug];
  90. sizeOfField[positionOfBug] = 0;
  91. return sizeOfField;
  92. }
  93. else
  94. {
  95. positionToBeMoved--;
  96. if (!IsValid(positionToBeMoved, sizeOfField))
  97. {
  98. sizeOfField[positionOfBug] = 0;
  99. return sizeOfField;
  100. }
  101. }
  102. }
  103. }
  104.  
  105. public static int[] MoovingRight(int positionOfBug, int flyLength, int[] sizeOfField)
  106. {
  107. var positionToBeMoved = flyLength + positionOfBug;
  108.  
  109. if (!IsValid(positionOfBug, sizeOfField))
  110. {
  111. return sizeOfField;
  112. }
  113.  
  114. if (flyLength == 0)
  115. {
  116. return sizeOfField;
  117. }
  118.  
  119. if (!IsValid(positionToBeMoved, sizeOfField))
  120. {
  121. sizeOfField[positionOfBug] = 0;
  122. return sizeOfField;
  123. }
  124.  
  125. while (true)
  126. {
  127.  
  128. if (IsEmpty(sizeOfField, positionToBeMoved))
  129. {
  130. sizeOfField[positionToBeMoved] = sizeOfField[positionOfBug];
  131. sizeOfField[positionOfBug] = 0;
  132. return sizeOfField;
  133. }
  134. else
  135. {
  136. positionToBeMoved++;
  137. if (!IsValid(positionToBeMoved, sizeOfField))
  138. {
  139. sizeOfField[positionOfBug] = 0;
  140. return sizeOfField;
  141. }
  142. }
  143. }
  144. }
  145. }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement