Advertisement
ExtremerBG

SoftUni Exam - Beavers

Feb 20th, 2022
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.47 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Beavrz
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             int n = int.Parse(Console.ReadLine());
  11.  
  12.             string[,] matrix = new string[n, n];
  13.  
  14.             int rowsBervs = 0;
  15.             int colsBervs = 0;
  16.             int woodBrchCount = 0;
  17.             List<char> woodBranchSymbols = new List<char>();
  18.  
  19.             for (int rows = 0; rows < n; rows++)
  20.             {
  21.                 string[] rowsInput = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
  22.  
  23.                 for (int cols = 0; cols < rowsInput.Length; cols++)
  24.                 {
  25.                     matrix[rows, cols] = rowsInput[cols];
  26.                     char letter = char.Parse(rowsInput[cols]);
  27.                     if (rowsInput[cols] == "B")
  28.                     {
  29.                         rowsBervs = rows;
  30.                         colsBervs = cols;
  31.                     }
  32.                     else if (char.IsLower(letter))
  33.                     {
  34.                         woodBrchCount++;
  35.                     }
  36.                 }
  37.             }
  38.  
  39.             string commands = Console.ReadLine();
  40.             while (commands != "end")
  41.             {
  42.                 if (woodBrchCount == 0)
  43.                 {
  44.                     break;
  45.                 }
  46.                 if (commands == "up")
  47.                 {
  48.                     if (IsInRange(matrix, rowsBervs - 1, colsBervs))
  49.                     {
  50.                         rowsBervs -= 1;
  51.                         char letter = char.Parse(matrix[rowsBervs, colsBervs]);
  52.                         if (char.IsLower(letter))
  53.                         {
  54.                             woodBranchSymbols.Add(letter);
  55.                             woodBrchCount--;
  56.                             matrix[rowsBervs, colsBervs] = "B";
  57.                             matrix[rowsBervs + 1, colsBervs] = "-";
  58.                         }
  59.                         else if (matrix[rowsBervs, colsBervs] == "F")
  60.                         {
  61.                             if (rowsBervs > 0)
  62.                             {
  63.                                 matrix[0, colsBervs] = "B";
  64.                                 matrix[rowsBervs + 1, colsBervs] = "-";
  65.                                 matrix[rowsBervs, colsBervs] = "-";
  66.                                 rowsBervs = 0;
  67.                             }
  68.                             else
  69.                             {
  70.                                 char letter1 = char.Parse(matrix[matrix.GetLength(0) - 1, colsBervs]);
  71.                                 matrix[matrix.GetLength(0) - 1, colsBervs] = "B";
  72.                                 matrix[rowsBervs + 1, colsBervs] = "-";
  73.                                 matrix[rowsBervs, colsBervs] = "-";
  74.                                 rowsBervs = matrix.GetLength(0) - 1;
  75.                                 if (char.IsLower(letter1))
  76.                                 {
  77.                                     woodBranchSymbols.Add(letter1);
  78.                                 }
  79.                             }
  80.                         }
  81.                         else
  82.                         {
  83.                             matrix[rowsBervs, colsBervs] = "B";
  84.                             matrix[rowsBervs + 1, colsBervs] = "-";
  85.                         }
  86.                     }
  87.                     else
  88.                     {
  89.                         if (woodBranchSymbols.Count > 0)
  90.                         {
  91.                             woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
  92.                         }
  93.                     }
  94.                 }
  95.                 else if (commands == "down")
  96.                 {
  97.                     if (IsInRange(matrix, rowsBervs + 1, colsBervs))
  98.                     {
  99.                         rowsBervs += 1;
  100.                         char letter = char.Parse(matrix[rowsBervs, colsBervs]);
  101.                         if (char.IsLower(letter))
  102.                         {
  103.                             woodBranchSymbols.Add(letter);
  104.                             woodBrchCount--;
  105.                             matrix[rowsBervs, colsBervs] = "B";
  106.                             matrix[rowsBervs - 1, colsBervs] = "-";
  107.                         }
  108.                         else if (matrix[rowsBervs, colsBervs] == "F")
  109.                         {
  110.                             if (rowsBervs < matrix.GetLength(0))
  111.                             {
  112.                                 matrix[matrix.GetLength(0) - 1, colsBervs] = "B";
  113.                                 matrix[rowsBervs - 1, colsBervs] = "-";
  114.                                 matrix[rowsBervs, colsBervs] = "-";
  115.                                 rowsBervs = matrix.GetLength(0) - 1;
  116.                             }
  117.                             else
  118.                             {
  119.                                 char letter1 = char.Parse(matrix[0, colsBervs]);
  120.                                 matrix[0, colsBervs] = "B";
  121.                                 matrix[rowsBervs - 1, colsBervs] = "-";
  122.                                 matrix[rowsBervs, colsBervs] = "-";
  123.                                 rowsBervs = 0;
  124.                                 if (char.IsLower(letter1))
  125.                                 {
  126.                                     woodBranchSymbols.Add(letter1);
  127.                                 }
  128.                             }
  129.                         }
  130.                         else
  131.                         {
  132.                             matrix[rowsBervs, colsBervs] = "B";
  133.                             matrix[rowsBervs - 1, colsBervs] = "-";
  134.                         }
  135.                     }
  136.                     else
  137.                     {
  138.                         if (woodBranchSymbols.Count > 0)
  139.                         {
  140.                             woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
  141.                         }
  142.                     }
  143.                 }
  144.                 else if (commands == "left")
  145.                 {
  146.                     if (IsInRange(matrix, rowsBervs, colsBervs - 1))
  147.                     {
  148.                         colsBervs -= 1;
  149.                         char letter = char.Parse(matrix[rowsBervs, colsBervs]);
  150.                         if (char.IsLower(letter))
  151.                         {
  152.                             woodBranchSymbols.Add(letter);
  153.                             woodBrchCount--;
  154.                             matrix[rowsBervs, colsBervs] = "B";
  155.                             matrix[rowsBervs, colsBervs + 1] = "-";
  156.                         }
  157.                         else if (matrix[rowsBervs, colsBervs] == "F")
  158.                         {
  159.                             if (colsBervs > 0)
  160.                             {
  161.                                 matrix[rowsBervs, 0] = "B";
  162.                                 matrix[rowsBervs, colsBervs + 1] = "-";
  163.                                 matrix[rowsBervs, colsBervs] = "-";
  164.                                 colsBervs = 0;
  165.                             }
  166.                             else
  167.                             {
  168.                                 char letter1 = char.Parse(matrix[rowsBervs, matrix.GetLength(1) - 1]);
  169.                                 matrix[rowsBervs, matrix.GetLength(1) - 1] = "B";
  170.                                 matrix[rowsBervs, colsBervs + 1] = "-";
  171.                                 matrix[rowsBervs, colsBervs] = "-";
  172.                                 colsBervs = matrix.GetLength(1) - 1;
  173.                                 if (char.IsLower(letter1))
  174.                                 {
  175.                                     woodBranchSymbols.Add(letter1);
  176.                                 }
  177.                             }
  178.                         }
  179.                         else
  180.                         {
  181.                             matrix[rowsBervs, colsBervs] = "B";
  182.                             matrix[rowsBervs, colsBervs + 1] = "-";
  183.                         }
  184.                     }
  185.                     else
  186.                     {
  187.                         if (woodBranchSymbols.Count > 0)
  188.                         {
  189.                             woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
  190.                         }
  191.                     }
  192.                 }
  193.                 else if (commands == "right")
  194.                 {
  195.                     if (IsInRange(matrix, rowsBervs, colsBervs + 1))
  196.                     {
  197.                         colsBervs += 1;
  198.                         char letter = char.Parse(matrix[rowsBervs, colsBervs]);
  199.                         if (char.IsLower(letter))
  200.                         {
  201.                             woodBranchSymbols.Add(letter);
  202.                             woodBrchCount--;
  203.                             matrix[rowsBervs, colsBervs] = "B";
  204.                             matrix[rowsBervs, colsBervs - 1] = "-";
  205.                         }
  206.                         else if (matrix[rowsBervs, colsBervs] == "F")
  207.                         {
  208.                             if (rowsBervs < matrix.GetLength(1))
  209.                             {
  210.                                 matrix[rowsBervs, matrix.GetLength(1) - 1] = "B";
  211.                                 matrix[rowsBervs, colsBervs - 1] = "-";
  212.                                 matrix[rowsBervs, colsBervs] = "-";
  213.                                 colsBervs = matrix.GetLength(1) - 1;
  214.                             }
  215.                             else
  216.                             {
  217.                                 char letter1 = char.Parse(matrix[rowsBervs, 0]);
  218.                                 matrix[rowsBervs, 0] = "B";
  219.                                 matrix[rowsBervs, colsBervs - 1] = "-";
  220.                                 matrix[rowsBervs, colsBervs] = "-";
  221.                                 colsBervs = 0;
  222.                                 if (char.IsLower(letter1))
  223.                                 {
  224.                                     woodBranchSymbols.Add(letter1);
  225.                                 }
  226.                             }
  227.                         }
  228.                         else
  229.                         {
  230.                             matrix[rowsBervs, colsBervs] = "B";
  231.                             matrix[rowsBervs, colsBervs - 1] = "-";
  232.                         }
  233.                     }
  234.                     else
  235.                     {
  236.                         if (woodBranchSymbols.Count > 0)
  237.                         {
  238.                             woodBranchSymbols.RemoveAt(woodBranchSymbols.Count - 1);
  239.                         }
  240.                     }
  241.                 }
  242.  
  243.                 commands = Console.ReadLine();
  244.             }
  245.  
  246.             if (woodBrchCount == 0)
  247.             {
  248.                 Console.Write($"The Beaver successfully collect {woodBranchSymbols.Count} wood branches: ");
  249.                 Console.WriteLine($"{string.Join(", ", woodBranchSymbols)}.");
  250.             }
  251.             else
  252.             {
  253.                 Console.WriteLine($"The Beaver failed to collect every wood branch. There are {woodBrchCount} branches left.");
  254.             }
  255.             for (int rows = 0; rows < matrix.GetLength(0); rows++)
  256.             {
  257.                 for (int cols = 0; cols < matrix.GetLength(1); cols++)
  258.                 {
  259.                     Console.Write($"{matrix[rows, cols]} ");
  260.                 }
  261.                 Console.WriteLine();
  262.             }
  263.         }
  264.  
  265.         public static bool IsInRange(string[,] matrix, int row, int col)
  266.         {
  267.             return row >= 0 && row < matrix.GetLength(0) &&
  268.                    col >= 0 && col < matrix.GetLength(1);
  269.         }
  270.     }
  271. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement