Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- namespace TheGarden
- {
- class Program
- {
- static int carrots;
- static int potatoes;
- static int lettuces;
- static int harmed;
- static void Main(string[] args)
- {
- var rows = int.Parse(Console.ReadLine());
- var garden = new char[rows][];
- for (int row = 0; row < rows; row++)
- {
- var columnValues = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(char.Parse).ToArray();
- garden[row] = columnValues;
- }
- var commandInfo = string.Empty;
- while ((commandInfo = Console.ReadLine().ToLower()) != "end of harvest")
- {
- var commands = commandInfo.Split(' ', StringSplitOptions.RemoveEmptyEntries).ToArray();
- var action = commands[0];
- var row = int.Parse(commands[1]);
- var col = int.Parse(commands[2]);
- if (action == "harvest" && IsInRange(row, col, garden))
- {
- if (garden[row][col] != ' ')
- {
- Harvest(row, col, garden);
- garden[row][col] = ' ';
- }
- }
- else if (action == "mole" && IsInRange(row, col, garden))
- {
- var direction = commands[3];
- if (garden[row][col] != ' ')
- {
- garden[row][col] = ' ';
- harmed++;
- }
- var isOutOfRange = false;
- while (true)
- {
- if (isOutOfRange)
- {
- break;
- }
- switch (direction)
- {
- case "up":
- if (IsInRange(row - 2, col, garden))
- {
- row -= 2;
- AdjustCol(row, col, garden);
- }
- else isOutOfRange = true;
- break;
- case "down":
- if ((IsInRange(row + 2, col, garden)))
- {
- row += 2;
- AdjustCol(row, col, garden);
- }
- else isOutOfRange = true;
- break;
- case "right":
- if ((IsInRange(row, col + 2, garden)))
- {
- col += 2;
- AdjustCol(row, col, garden);
- }
- else isOutOfRange = true;
- break;
- case "left":
- if ((IsInRange(row, col - 2, garden)))
- {
- col -= 2;
- AdjustCol(row, col, garden);
- }
- else isOutOfRange = true;
- break;
- default:
- break;
- }
- }
- }
- }
- for (int row = 0; row < garden.Length; row++)
- {
- Console.WriteLine(string.Join(" ", garden[row]));
- }
- Console.WriteLine($"Carrots: {carrots}");
- Console.WriteLine($"Potatoes: {potatoes}");
- Console.WriteLine($"Lettuce: {lettuces}");
- Console.WriteLine($"Harmed vegetables: {harmed}");
- }
- private static void AdjustCol(int currentRow, int currentCol, char[][] garden)
- {
- if (garden[currentRow][currentCol] != ' ')
- {
- garden[currentRow][currentCol] = ' ';
- harmed++;
- }
- }
- private static void Harvest(int row, int col, char[][] garden)
- {
- if (garden[row][col] == 'L')
- {
- lettuces++;
- }
- else if (garden[row][col] == 'P')
- {
- potatoes++;
- }
- else if (garden[row][col] == 'C')
- {
- carrots++;
- }
- }
- private static bool IsInRange(int row, int col, char[][] matrix)
- {
- return row >= 0 && row < matrix.Length && col >= 0 && col < matrix[row].Length;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement