Advertisement
Galina841130

beaver

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