Advertisement
Dianov

LadyBugs

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