viraco4a

Fu*inLongSolution

Jan 29th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.52 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 _13_Point_in_the_Figure
  8. {
  9. public class Box
  10. {
  11. public int Number { get; set; }
  12. public int size { get; set; }
  13. public int startX { get; set; }
  14. public int startY { get; set; }
  15. public int endX { get; set; }
  16. public int endY { get; set; }
  17.  
  18. public void defineEnds()
  19. {
  20. this.endX = this.startX + this.size;
  21. this.endY = this.startY + this.size;
  22. }
  23.  
  24. }
  25.  
  26. class Program
  27. {
  28. static void Main(string[] args)
  29. {
  30. int h = int.Parse(Console.ReadLine());
  31. int x = int.Parse(Console.ReadLine());
  32. int y = int.Parse(Console.ReadLine());
  33.  
  34. Box Box1 = GetBox1(h);
  35. Box Box2 = GetBox2(h, Box1);
  36. Box Box3 = GetBox3(h, Box2);
  37. Box Box4 = GetBox4(h, Box1);
  38. Box Box5 = GetBox5(h, Box4);
  39. Box Box6 = GetBox6(h, Box5);
  40. bool Border, Inside;
  41. CheckForBorderOrInside(x, y, Box1, Box2, Box3, Box4, Box5, Box6, out Border, out Inside);
  42.  
  43. Border = Edges(x, y, Box1, Box2, Box5, Border);
  44.  
  45. if (Border)
  46. {
  47. Console.WriteLine("border");
  48. }
  49. else if (Inside)
  50. {
  51. Console.WriteLine("inside");
  52. }
  53. if (Border == false && Inside == false)
  54. {
  55. Console.WriteLine("outside");
  56. }
  57.  
  58. }
  59.  
  60. private static void CheckForBorderOrInside(int x, int y, Box Box1, Box Box2, Box Box3, Box Box4, Box Box5, Box Box6, out bool Border, out bool Inside)
  61. {
  62. Border = false;
  63. Inside = false;
  64. if (CheckForBorder(Box1, x, y) && (!CheckForBorder(Box2, x, y)))
  65. {
  66. Border = true;
  67. }
  68. else if (CheckForBorder(Box2, x, y) && (!CheckForBorder(Box1, x, y)) && (!CheckForBorder(Box3, x, y)) && (!CheckForBorder(Box4, x, y)))
  69. {
  70. Border = true;
  71. }
  72. else if (CheckForBorder(Box3, x, y) && (!CheckForBorder(Box2, x, y)))
  73. {
  74. Border = true;
  75.  
  76. }
  77. else if (CheckForBorder(Box4, x, y) && (!CheckForBorder(Box2, x, y)) && (!CheckForBorder(Box5, x, y)))
  78. {
  79. Border = true;
  80. }
  81. else if (CheckForBorder(Box5, x, y) && (!CheckForBorder(Box4, x, y)) && (!CheckForBorder(Box6, x, y)))
  82. {
  83. Border = true;
  84. }
  85. else if (CheckForBorder(Box6, x, y) && (!CheckForBorder(Box5, x, y)))
  86. {
  87. Border = true;
  88. }
  89. else if (CheckForBorder(Box1, x, y) && CheckForBorder(Box2, x, y))
  90. {
  91. Inside = true;
  92. }
  93. else if (CheckForBorder(Box2, x, y) && ((CheckForBorder(Box3, x, y)) || (CheckForBorder(Box4, x, y))))
  94. {
  95. Inside = true;
  96. }
  97. else if (CheckForBorder(Box4, x, y) && CheckForBorder(Box5, x, y))
  98. {
  99. Inside = true;
  100. }
  101. else if (CheckForBorder(Box5, x, y) && CheckForBorder(Box6, x, y))
  102. {
  103. Inside = true;
  104. }
  105. else if (CheckForInside(Box1, x, y) || CheckForInside(Box2, x, y) || CheckForInside(Box3, x, y)
  106. || CheckForInside(Box4, x, y) || CheckForInside(Box5, x, y) || CheckForInside(Box6, x, y))
  107. {
  108. Inside = true;
  109. }
  110. }
  111.  
  112. private static bool Edges(int x, int y, Box Box1, Box Box2, Box Box5, bool Border)
  113. {
  114. if (x == Box1.endX && y == Box1.endY)
  115. {
  116. Border = true;
  117. }
  118. else if (x == Box1.endX && y == Box1.startY)
  119. {
  120. Border = true;
  121. }
  122. else if (x == Box2.endX && y == Box2.startY)
  123. {
  124. Border = true;
  125. }
  126. else if (x == Box2.endX && y == Box2.endY)
  127. {
  128. Border = true;
  129. }
  130. else if (x == Box5.startX && y == Box5.startY)
  131. {
  132. Border = true;
  133. }
  134. else if (x == Box5.startX && y == Box5.endY)
  135. {
  136. Border = true;
  137. }
  138. else if (x == Box5.endX && y == Box5.startY)
  139. {
  140. Border = true;
  141. }
  142. else if (x == Box5.endX && y == Box5.endY)
  143. {
  144. Border = true;
  145. }
  146.  
  147. return Border;
  148. }
  149.  
  150. private static Box GetBox6(int h, Box Box5)
  151. {
  152. Box Box6 = new Box();
  153. Box6.startX = Box5.startX;
  154. Box6.startY = Box5.endY;
  155. Box6.size = h;
  156. Box6.defineEnds();
  157. return Box6;
  158. }
  159.  
  160. private static Box GetBox5(int h, Box Box4)
  161. {
  162. Box Box5 = new Box();
  163. Box5.startX = Box4.startX;
  164. Box5.startY = Box4.endY;
  165. Box5.size = h;
  166. Box5.defineEnds();
  167. return Box5;
  168. }
  169.  
  170. private static Box GetBox4(int h, Box Box1)
  171. {
  172. Box Box4 = new Box();
  173. Box4.startX = Box1.endX;
  174. Box4.startY = Box1.endY;
  175. Box4.size = h;
  176. Box4.defineEnds();
  177. return Box4;
  178. }
  179.  
  180. private static Box GetBox3(int h, Box Box2)
  181. {
  182. Box Box3 = new Box();
  183. Box3.startX = Box2.endX;
  184. Box3.startY = Box2.startY;
  185. Box3.size = h;
  186. Box3.defineEnds();
  187. return Box3;
  188. }
  189.  
  190. private static Box GetBox1(int h)
  191. {
  192. Box Box1 = new Box();
  193. Box1.startX = 0;
  194. Box1.startY = 0;
  195. Box1.size = h;
  196. Box1.defineEnds();
  197. return Box1;
  198. }
  199.  
  200. private static Box GetBox2(int h, Box Box1)
  201. {
  202. Box Box2 = new Box();
  203. Box2.startX = Box1.endX;
  204. Box2.startY = Box1.startY;
  205. Box2.size = h;
  206. Box2.defineEnds();
  207. return Box2;
  208. }
  209.  
  210. public static bool CheckForBorder(Box CurrentBox, int XtoCheck, int YtoCheck)
  211. {
  212. bool Xequality = XtoCheck == CurrentBox.startX || XtoCheck == CurrentBox.endX;
  213. bool Yinside = CurrentBox.startY <= YtoCheck && YtoCheck <= CurrentBox.endY;
  214. bool Yequality = YtoCheck == CurrentBox.startY || YtoCheck == CurrentBox.endY;
  215. bool Xinside = CurrentBox.startX <= XtoCheck && XtoCheck <= CurrentBox.endX;
  216. bool isBorder = false;
  217. if (Xequality && Yinside)
  218. {
  219. isBorder = true;
  220. }
  221. else if (Yequality && Xinside)
  222. {
  223. isBorder = true;
  224. }
  225. return isBorder;
  226. }
  227.  
  228. public static bool CheckForInside(Box CurrentBox, int XtoCheck, int YtoCheck)
  229. {
  230. bool Yinside = CurrentBox.startY < YtoCheck && YtoCheck < CurrentBox.endY;
  231. bool Xinside = CurrentBox.startX < XtoCheck && XtoCheck < CurrentBox.endX;
  232. bool isInside = false;
  233. if (Xinside && Yinside)
  234. {
  235. isInside = true;
  236. }
  237. return isInside;
  238. }
  239. }
  240. }
Advertisement
Add Comment
Please, Sign In to add comment