Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace Beavrz
- {
- class Program
- {
- static void Main(string[] args)
- {
- int n = int.Parse(Console.ReadLine());
- string[,] matrix = new string[n, n];
- int rowsBervs = 0;
- int colsBervs = 0;
- int woodBrchCount = 0;
- List<char> woodBranchSymbols = new List<char>();
- for (int rows = 0; rows < n; rows++)
- {
- string[] rowsInput = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
- for (int cols = 0; cols < rowsInput.Length; cols++)
- {
- matrix[rows, cols] = rowsInput[cols];
- char letter = char.Parse(rowsInput[cols]);
- if (rowsInput[cols] == "B")
- {
- rowsBervs = rows;
- colsBervs = cols;
- }
- else if (char.IsLower(letter))
- {
- woodBrchCount++;
- }
- }
- }
- string commands = Console.ReadLine();
- while (commands != "end")
- {
- if (woodBrchCount == 0)
- {
- break;
- }
- if (commands == "up")
- {
- if (IsInRange(matrix, rowsBervs - 1, colsBervs))
- {
- rowsBervs -= 1;
- char letter = char.Parse(matrix[rowsBervs, colsBervs]);
- if (char.IsLower(letter))
- {
- woodBranchSymbols.Add(letter);
- woodBrchCount--;
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs + 1, colsBervs] = "-";
- }
- else if (matrix[rowsBervs, colsBervs] == "F")
- {
- if (rowsBervs > 0)
- {
- matrix[0, colsBervs] = "B";
- matrix[rowsBervs + 1, colsBervs] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- rowsBervs = 0;
- }
- else
- {
- char letter1 = char.Parse(matrix[matrix.GetLength(0) - 1, colsBervs]);
- matrix[matrix.GetLength(0) - 1, colsBervs] = "B";
- matrix[rowsBervs + 1, colsBervs] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- rowsBervs = matrix.GetLength(0) - 1;
- if (char.IsLower(letter1))
- {
- woodBranchSymbols.Add(letter1);
- }
- }
- }
- else
- {
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs + 1, colsBervs] = "-";
- }
- }
- else
- {
- if (woodBranchSymbols.Count > 0)
- {
- woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
- }
- }
- }
- else if (commands == "down")
- {
- if (IsInRange(matrix, rowsBervs + 1, colsBervs))
- {
- rowsBervs += 1;
- char letter = char.Parse(matrix[rowsBervs, colsBervs]);
- if (char.IsLower(letter))
- {
- woodBranchSymbols.Add(letter);
- woodBrchCount--;
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs - 1, colsBervs] = "-";
- }
- else if (matrix[rowsBervs, colsBervs] == "F")
- {
- if (rowsBervs < matrix.GetLength(0))
- {
- matrix[matrix.GetLength(0) - 1, colsBervs] = "B";
- matrix[rowsBervs - 1, colsBervs] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- rowsBervs = matrix.GetLength(0) - 1;
- }
- else
- {
- char letter1 = char.Parse(matrix[0, colsBervs]);
- matrix[0, colsBervs] = "B";
- matrix[rowsBervs - 1, colsBervs] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- rowsBervs = 0;
- if (char.IsLower(letter1))
- {
- woodBranchSymbols.Add(letter1);
- }
- }
- }
- else
- {
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs - 1, colsBervs] = "-";
- }
- }
- else
- {
- if (woodBranchSymbols.Count > 0)
- {
- woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
- }
- }
- }
- else if (commands == "left")
- {
- if (IsInRange(matrix, rowsBervs, colsBervs - 1))
- {
- colsBervs -= 1;
- char letter = char.Parse(matrix[rowsBervs, colsBervs]);
- if (char.IsLower(letter))
- {
- woodBranchSymbols.Add(letter);
- woodBrchCount--;
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs, colsBervs + 1] = "-";
- }
- else if (matrix[rowsBervs, colsBervs] == "F")
- {
- if (colsBervs > 0)
- {
- matrix[rowsBervs, 0] = "B";
- matrix[rowsBervs, colsBervs + 1] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- colsBervs = 0;
- }
- else
- {
- char letter1 = char.Parse(matrix[rowsBervs, matrix.GetLength(1) - 1]);
- matrix[rowsBervs, matrix.GetLength(1) - 1] = "B";
- matrix[rowsBervs, colsBervs + 1] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- colsBervs = matrix.GetLength(1) - 1;
- if (char.IsLower(letter1))
- {
- woodBranchSymbols.Add(letter1);
- }
- }
- }
- else
- {
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs, colsBervs + 1] = "-";
- }
- }
- else
- {
- if (woodBranchSymbols.Count > 0)
- {
- woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
- }
- }
- }
- else if (commands == "right")
- {
- if (IsInRange(matrix, rowsBervs, colsBervs + 1))
- {
- colsBervs += 1;
- char letter = char.Parse(matrix[rowsBervs, colsBervs]);
- if (char.IsLower(letter))
- {
- woodBranchSymbols.Add(letter);
- woodBrchCount--;
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs, colsBervs - 1] = "-";
- }
- else if (matrix[rowsBervs, colsBervs] == "F")
- {
- if (rowsBervs < matrix.GetLength(1))
- {
- matrix[rowsBervs, matrix.GetLength(1) - 1] = "B";
- matrix[rowsBervs, colsBervs - 1] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- colsBervs = matrix.GetLength(1) - 1;
- }
- else
- {
- char letter1 = char.Parse(matrix[rowsBervs, 0]);
- matrix[rowsBervs, 0] = "B";
- matrix[rowsBervs, colsBervs - 1] = "-";
- matrix[rowsBervs, colsBervs] = "-";
- colsBervs = 0;
- if (char.IsLower(letter1))
- {
- woodBranchSymbols.Add(letter1);
- }
- }
- }
- else
- {
- matrix[rowsBervs, colsBervs] = "B";
- matrix[rowsBervs, colsBervs - 1] = "-";
- }
- }
- else
- {
- if (woodBranchSymbols.Count > 0)
- {
- woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
- }
- }
- }
- commands = Console.ReadLine();
- }
- if (woodBrchCount == 0)
- {
- Console.Write($"The Beaver successfully collect {woodBranchSymbols.Count} wood branches: ");
- Console.WriteLine($"{string.Join(", ", woodBranchSymbols)}.");
- }
- else
- {
- Console.WriteLine($"The Beaver failed to collect every wood branch. There are {woodBrchCount} branches left.");
- }
- for (int rows = 0; rows < matrix.GetLength(0); rows++)
- {
- for (int cols = 0; cols < matrix.GetLength(1); cols++)
- {
- Console.Write($"{matrix[rows, cols]} ");
- }
- Console.WriteLine();
- }
- }
- public static bool IsInRange(string[,] matrix, int row, int col)
- {
- return row >= 0 && row < matrix.GetLength(0) &&
- col >= 0 && col < matrix.GetLength(1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement