MeGaDeTH_91

08. Bunnies

Feb 1st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.22 KB | None | 0 0
  1. using System;
  2.  
  3. namespace _8._Radioactive_Bunnies
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. var items = Console.ReadLine().Trim().Split();
  10. var row = int.Parse(items[0]);
  11. var col = int.Parse(items[1]);
  12.  
  13. var matr = new char[row, col];
  14. string input;
  15. var output = string.Empty;
  16.  
  17. for (var i = 0; i < row; i++)
  18. {
  19. input = Console.ReadLine();
  20. for (var j = 0; j < col; j++)
  21. matr[i, j] = input[j];
  22. }
  23.  
  24. var resultingCave = new char[row, col];
  25. Array.Copy(matr, resultingCave, matr.Length);
  26.  
  27. input = Console.ReadLine();
  28. bool died = false, escaped = false;
  29.  
  30. for (var i = 0; i < input.Length; i++)
  31. {
  32. for (var j = 0; j < row; j++)
  33. {
  34. for (var k = 0; k < col; k++)
  35. {
  36. if (!matr[j, k].Equals('P'))
  37. continue;
  38.  
  39. switch (input[i])
  40. {
  41. case 'U':
  42. try
  43. {
  44. if (resultingCave[j - 1, k].Equals('B'))
  45. {
  46. output = $"dead: {j - 1} {k}";
  47. resultingCave[j, k] = '.';
  48. died = true;
  49. }
  50. else
  51. {
  52. resultingCave[j - 1, k] = 'P';
  53. resultingCave[j, k] = '.';
  54. }
  55. }
  56. catch (Exception)
  57. {
  58. output = $"won: {j} {k}";
  59. escaped = true;
  60. resultingCave[j, k] = '.';
  61. }
  62. break;
  63.  
  64. case 'L':
  65. try
  66. {
  67. if (resultingCave[j, k - 1].Equals('B'))
  68. {
  69. output = $"dead: {j} {k - 1}";
  70. resultingCave[j, k] = '.';
  71. died = true;
  72. }
  73. else
  74. {
  75. resultingCave[j, k - 1] = 'P';
  76. resultingCave[j, k] = '.';
  77. }
  78. }
  79. catch (Exception)
  80. {
  81. output = $"won: {j} {k}";
  82. escaped = true;
  83. resultingCave[j, k] = '.';
  84. }
  85. break;
  86.  
  87. case 'R':
  88. try
  89. {
  90. if (resultingCave[j, k + 1].Equals('B'))
  91. {
  92. output = $"dead: {j} {k + 1}";
  93. resultingCave[j, k] = '.';
  94. died = true;
  95. }
  96. else
  97. {
  98. resultingCave[j, k + 1] = 'P';
  99. resultingCave[j, k] = '.';
  100. }
  101. }
  102. catch (Exception)
  103. {
  104. output = $"won: {j} {k}";
  105. escaped = true;
  106. resultingCave[j, k] = '.';
  107. }
  108. break;
  109.  
  110. case 'D':
  111. try
  112. {
  113. if (resultingCave[j + 1, k].Equals('B'))
  114. {
  115. output = $"dead: {j + 1} {k}";
  116. resultingCave[j, k] = '.';
  117. died = true;
  118. }
  119. else
  120. {
  121. resultingCave[j + 1, k] = 'P';
  122. resultingCave[j, k] = '.';
  123. }
  124. }
  125. catch (Exception)
  126. {
  127. output = $"won: {j} {k}";
  128. escaped = true;
  129. resultingCave[j, k] = '.';
  130. }
  131. break;
  132. }
  133. }
  134. }
  135. for (var j = 0; j < row; j++)
  136. {
  137. for (var k = 0; k < col; k++)
  138. {
  139. if (!matr[j, k].Equals('B'))
  140. continue;
  141.  
  142. try
  143. {
  144. var element = resultingCave[j - 1, k];
  145. if (element.Equals('P'))
  146. {
  147. died = true;
  148. output = $"dead: {j - 1} {k}";
  149. }
  150.  
  151. resultingCave[j - 1, k] = 'B';
  152.  
  153. }
  154. catch (Exception) { }
  155.  
  156. try
  157. {
  158. var element = resultingCave[j + 1, k];
  159. if (element.Equals('P'))
  160. {
  161. died = true;
  162. output = $"dead: {j + 1} {k}";
  163. }
  164. resultingCave[j + 1, k] = 'B';
  165. }
  166. catch (Exception) { }
  167.  
  168. try
  169. {
  170. var element = resultingCave[j, k - 1];
  171. if (element.Equals('P'))
  172. {
  173. died = true;
  174. output = $"dead: {j } {k - 1}";
  175. }
  176. resultingCave[j, k - 1] = 'B';
  177. }
  178. catch (Exception) { }
  179.  
  180. try
  181. {
  182. var element = resultingCave[j, k + 1];
  183. if (element.Equals('P'))
  184. {
  185. died = true;
  186. output = $"dead: {j } {k + 1}";
  187. }
  188. resultingCave[j, k + 1] = 'B';
  189. }
  190. catch (Exception) { }
  191.  
  192. resultingCave[j, k] = 'B';
  193. }
  194. }
  195.  
  196. Array.Copy(resultingCave, matr, resultingCave.Length);
  197. if (!died && !escaped)
  198. continue;
  199.  
  200. for (var l = 0; l < row; l++)
  201. {
  202. for (var m = 0; m < col; m++)
  203. Console.Write(resultingCave[l, m]);
  204.  
  205. Console.WriteLine();
  206. }
  207.  
  208. Console.WriteLine(output);
  209. return;
  210. }
  211. }
  212. }
  213. }
Advertisement
Add Comment
Please, Sign In to add comment