Advertisement
aspire12

10.LadyBugs

Mar 28th, 2020
406
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.96 KB | None | 0 0
  1.     using System;
  2.     using System.Linq;
  3.  
  4.     namespace _10.LadyBugs
  5.     {
  6.         class Program
  7.         {
  8.             static void Main(string[] args)
  9.             {
  10.                 int fieldSize = int.Parse(Console.ReadLine()); // въвежда се размер на полето
  11.                 int[] ladyBugsInField = new int[fieldSize]; // създава се поле по въведения размер
  12.                 int[] initialIndexes = Console.ReadLine().Split().Select(int.Parse).ToArray(); // въвеждат се начални позиции на калинки
  13.                
  14.                 foreach(var initialIndex in initialIndexes) // провека дали въведените позиции на калинки са в полето
  15.                 {
  16.                     if (initialIndex >=0 && initialIndex < fieldSize)
  17.                     {
  18.                         ladyBugsInField[initialIndex] = 1;
  19.                     }
  20.                 }
  21.  
  22.                 string command = string.Empty; // празен стринг за инструкция
  23.                 while((command = Console.ReadLine()) != "end") // въвеждане и проверка на инструкцията
  24.                 {
  25.                     int start = int.Parse(command.Split()[0]); // начална позиция
  26.                     int moveStep = int.Parse(command.Split()[2]); // стъпка за преместване
  27.                     string direction = command.Split()[1]; // посока на движение
  28.  
  29.                     if(start >= 0 && start < fieldSize) // проверка дали началната позиция е в полето
  30.                     {
  31.                         if(ladyBugsInField[start] == 0 || moveStep == 0) // проверка дали има/няма калинка на началната позиция или има/няма стъпка за преместване
  32.                         {
  33.                             continue;
  34.                         }
  35.                         else
  36.                         {
  37.                             ladyBugsInField[start] = 0; // премахва калинката от началната позиция
  38.  
  39.                             if(direction == "left") // проверка за посока наляво
  40.                             {
  41.                                 if(start - moveStep >= 0 && start - moveStep < fieldSize) // проверка дали след преместване калинката ще бъде в полето
  42.                                 {
  43.                                     for (int i = start - moveStep; i < fieldSize && i >= 0; i -= moveStep) // проверка дали е свободна крайната позицията
  44.                                     {
  45.                                         if(ladyBugsInField[i] == 0) // ако е свободна
  46.                                         {
  47.                                             ladyBugsInField[i] = 1; // премества калинката
  48.                                             break; // и излиза от проверката
  49.                                         }
  50.                                     }
  51.                                 }
  52.                             }
  53.                             else if (direction == "right") // проверка за посока надясно
  54.                             {
  55.                                 if (start + moveStep >= 0 && start + moveStep < fieldSize) // проверка дали след преместване калинката ще бъде в полето
  56.                             {
  57.                                     for (int i = start + moveStep; i < fieldSize && i >= 0; i+= moveStep) // проверка дали е свободна крайната позицията
  58.                                 {
  59.                                         if (ladyBugsInField[i] == 0) // ако е свободна
  60.                                         {
  61.                                             ladyBugsInField[i] = 1; // премества калинката
  62.                                             break; // и излиза от проверката
  63.                                         }
  64.                                     }
  65.                                 }
  66.                             }
  67.                             else // ако посоката е различна от "наляво" или "нядясно"
  68.                             {
  69.                                 ladyBugsInField[start] = 1; // калинката се връща на началната позиция
  70.                                 continue; // повтаря while цикъла
  71.                             }
  72.                         }
  73.                     }
  74.                 }
  75.  
  76.                 Console.WriteLine(string.Join(" ", ladyBugsInField)); // принтира полето с калинки
  77.             }
  78.         }
  79.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement