Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.66 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _01.TheGarden
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. List<List<string>> garden = new List<List<string>>();
  12. List<int> harmedVegetables = new List<int>();
  13. Dictionary<string, int> dictVegetables = new Dictionary<string, int>();
  14. AddCaindOfVegetableInDict(dictVegetables);
  15. int numberRolInGarden = int.Parse(Console.ReadLine());
  16. for (int i = 0; i < numberRolInGarden; i++)
  17. {
  18. List<string> lineInGarden = CreateLine(Console.ReadLine());
  19. garden.Add(lineInGarden);
  20. }
  21. string command;
  22. while ((command = Console.ReadLine()) != "End of Harvest")
  23. {
  24. Queue<string> qCommand = new Queue<string>(command.Split(" ", StringSplitOptions.RemoveEmptyEntries));
  25. string firstCommand = qCommand.Dequeue();
  26. switch (firstCommand)
  27. {
  28. case "Harvest":
  29. HarvestFromGarden(qCommand, garden, dictVegetables);
  30. break;
  31. case "Mole":
  32. MoleAttackGarden(qCommand, garden, harmedVegetables);
  33. break;
  34. }
  35. }
  36. PrintGarden(garden);
  37. PrintVegDict(dictVegetables);
  38. Console.WriteLine($"Harmed vegetables: {harmedVegetables.Count}");
  39. }
  40.  
  41. private static void MoleAttackGarden(Queue<string> qCommand, List<List<string>> garden, List<int> harmedVegetables)
  42. {
  43. int moleRow = int.Parse(qCommand.Dequeue());
  44. int moleCol = int.Parse(qCommand.Dequeue());
  45. string direction = qCommand.Dequeue().ToLower();
  46. if ((garden.Count - 1 >= moleRow) && (garden[moleRow].Count - 1 >= moleCol) && garden[moleRow][moleCol] != " ")
  47. {
  48. harmedVegetables.Add(1);
  49. garden[moleRow][moleCol] = " ";
  50. switch (direction)
  51. {
  52. case "up":
  53. moleRow -= 2;
  54. while (moleRow >= 0)
  55. {
  56. if ((garden.Count - 1 >= moleRow)
  57. && (garden[moleRow].Count - 1 >= moleCol)
  58. && garden[moleRow][moleCol] != " ")
  59. {
  60. harmedVegetables.Add(1);
  61. garden[moleRow][moleCol] = " ";
  62.  
  63. }
  64. moleRow -= 2;
  65. }
  66. break;
  67. case "down":
  68. moleRow += 2;
  69. while (garden.Count-1 >= moleRow)
  70. {
  71. if ((garden.Count - 1 >= moleRow)
  72. && (garden[moleRow].Count - 1 >= moleCol)
  73. && garden[moleRow][moleCol] != " ")
  74. {
  75. harmedVegetables.Add(1);
  76. garden[moleRow][moleCol] = " ";
  77.  
  78. }
  79. moleRow += 2;
  80. }
  81. break;
  82. case "right":
  83. moleCol += 2;
  84. while (garden[moleRow].Count-1 >= moleCol)
  85. {
  86.  
  87. if ((garden.Count - 1 >= moleRow)
  88. && (garden[moleRow].Count - 1 >= moleCol)
  89. && garden[moleRow][moleCol] != " ")
  90. {
  91. harmedVegetables.Add(1);
  92. garden[moleRow][moleCol] = " ";
  93. }
  94. moleCol += 2;
  95. }
  96. break;
  97. case "left":
  98. moleCol -= 2;
  99. while (moleCol>=0)
  100. {
  101.  
  102. if ((garden.Count - 1 >= moleRow)
  103. && (garden[moleRow].Count - 1 >= moleCol)
  104. && garden[moleRow][moleCol] != " ")
  105. {
  106. harmedVegetables.Add(1);
  107. garden[moleRow][moleCol] = " ";
  108. }
  109. moleCol -= 2;
  110. }
  111. break;
  112. }
  113.  
  114.  
  115. }
  116.  
  117. }
  118.  
  119. private static void PrintVegDict(Dictionary<string, int> dictVegetables)
  120. {
  121. foreach (var vege in dictVegetables)
  122. {
  123. if (vege.Key == "C")
  124. {
  125. Console.WriteLine($"Carrots: {vege.Value}");
  126. }
  127. else if (vege.Key == "P")
  128. {
  129. Console.WriteLine($"Potatoes: {vege.Value}");
  130. }
  131. else
  132. {
  133. Console.WriteLine($"Lettuce: {vege.Value}");
  134.  
  135. }
  136. }
  137. }
  138.  
  139. private static void HarvestFromGarden(Queue<string> qCommand, List<List<string>> garden, Dictionary<string, int> dictVegetables)
  140. {
  141. int rowHarvest = int.Parse(qCommand.Dequeue());
  142. int colHarvest = int.Parse(qCommand.Dequeue());
  143. if ((garden.Count - 1 >= rowHarvest) && (garden[rowHarvest].Count - 1 >= colHarvest) && garden[rowHarvest][colHarvest] != " ")
  144. {
  145. string vegiKey = garden[rowHarvest][colHarvest];
  146. garden[rowHarvest][colHarvest] = " ";
  147. dictVegetables[vegiKey]++;
  148. }
  149. }
  150.  
  151. private static void AddCaindOfVegetableInDict(Dictionary<string, int> dictVegetables)
  152. {
  153. dictVegetables.Add("C", 0);
  154. dictVegetables.Add("P", 0);
  155. dictVegetables.Add("L", 0);
  156. }
  157.  
  158. private static void PrintGarden(List<List<string>> garden)
  159. {
  160. Console.ForegroundColor = ConsoleColor.Red;
  161. foreach (var gardenLine in garden)
  162. {
  163. Console.WriteLine(string.Join(" ", gardenLine));
  164. }
  165. Console.ForegroundColor = ConsoleColor.White;
  166. }
  167.  
  168. private static List<string> CreateLine(string input)
  169. {
  170. var result = input.Split(" ", StringSplitOptions.RemoveEmptyEntries).
  171. Select(x=>x.ToUpper()).
  172. ToList();
  173. return result;
  174.  
  175. }
  176. }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement