Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- namespace _02.Ladybugs
- {
- class Program
- {
- static void Main()
- {
- var sizeOfField = new int[int.Parse(Console.ReadLine())];
- var positionOfLadybugs = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
- for (int i = 0; i < positionOfLadybugs.Length; i++)
- {
- var index = positionOfLadybugs[i];
- if (IsValid(index, sizeOfField))
- {
- sizeOfField[index] = 1;
- }
- }
- while (true)
- {
- var commandArgs = Console.ReadLine().Split(' ');
- if (commandArgs[0] == "end")
- {
- break;
- }
- var positionOfBug = int.Parse(commandArgs[0]);
- var command = commandArgs[1];
- var FlyingLentgth = int.Parse(commandArgs[2]);
- if (command == "right")
- {
- MoovingRight(positionOfBug, FlyingLentgth, sizeOfField);
- }
- else if (command == "left")
- {
- MoovingLeft(positionOfBug, FlyingLentgth, sizeOfField);
- }
- }
- Console.WriteLine(string.Join(" ", sizeOfField));
- }
- public static bool IsValid(int index, int[] sizeOfField)
- {
- if (index > sizeOfField.Length - 1 || index < 0)
- {
- return false;
- }
- return true;
- }
- public static bool IsEmpty(int[] sizeOfField, int index)
- {
- if (sizeOfField[index] != 0)
- {
- return false;
- }
- return true;
- }
- public static int[] MoovingLeft(int positionOfBug, int flyLength, int[] sizeOfField)
- {
- var positionToBeMoved = positionOfBug - flyLength;
- if (!IsValid(positionOfBug, sizeOfField))
- {
- return sizeOfField;
- }
- if (flyLength == 0)
- {
- return sizeOfField;
- }
- if (!IsValid(positionToBeMoved, sizeOfField))
- {
- sizeOfField[positionOfBug] = 0;
- return sizeOfField;
- }
- while (true)
- {
- if (IsEmpty(sizeOfField, positionToBeMoved))
- {
- sizeOfField[positionToBeMoved] = sizeOfField[positionOfBug];
- sizeOfField[positionOfBug] = 0;
- return sizeOfField;
- }
- else
- {
- positionToBeMoved--;
- if (!IsValid(positionToBeMoved, sizeOfField))
- {
- sizeOfField[positionOfBug] = 0;
- return sizeOfField;
- }
- }
- }
- }
- public static int[] MoovingRight(int positionOfBug, int flyLength, int[] sizeOfField)
- {
- var positionToBeMoved = flyLength + positionOfBug;
- if (!IsValid(positionOfBug, sizeOfField))
- {
- return sizeOfField;
- }
- if (flyLength == 0)
- {
- return sizeOfField;
- }
- if (!IsValid(positionToBeMoved, sizeOfField))
- {
- sizeOfField[positionOfBug] = 0;
- return sizeOfField;
- }
- while (true)
- {
- if (IsEmpty(sizeOfField, positionToBeMoved))
- {
- sizeOfField[positionToBeMoved] = sizeOfField[positionOfBug];
- sizeOfField[positionOfBug] = 0;
- return sizeOfField;
- }
- else
- {
- positionToBeMoved++;
- if (!IsValid(positionToBeMoved, sizeOfField))
- {
- sizeOfField[positionOfBug] = 0;
- return sizeOfField;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement