simonradev

LadyBugsImroved

Dec 7th, 2016
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace LadyBugs
  8. {
  9.     class Program
  10.     {
  11.         public static int[] ladyBugs;
  12.  
  13.         static void Main(string[] args)
  14.         {
  15.             int sizeOfTheField = int.Parse(Console.ReadLine());
  16.             ladyBugs = new int[sizeOfTheField];
  17.  
  18.             int[] ladyBugsPositions = Console.ReadLine().Split().Select(int.Parse).
  19.                 Where(x => x >= 0 && x < sizeOfTheField).ToArray();
  20.  
  21.             foreach (int currPositioning in ladyBugsPositions)
  22.             {
  23.                 ladyBugs[currPositioning] = 1;
  24.             }
  25.  
  26.             string inputLine = Console.ReadLine();
  27.             while (!inputLine.Equals("end"))
  28.             {
  29.                 string[] positioningInfo = inputLine.Split().ToArray();
  30.  
  31.                 int ladyBugIndex = int.Parse(positioningInfo[0]);
  32.                 string direction = positioningInfo[1].ToLower();
  33.                 int flyLenght = int.Parse(positioningInfo[2]);
  34.  
  35.                 if (flyLenght < 0 && direction.Equals("right"))
  36.                 {
  37.                     flyLenght = Math.Abs(flyLenght);
  38.                     direction = "left";
  39.                 }
  40.                 else if (flyLenght < 0 && direction.Equals("left"))
  41.                 {
  42.                     flyLenght = Math.Abs(flyLenght);
  43.                     direction = "right";
  44.                 }
  45.  
  46.                 if (direction.Equals("right"))
  47.                 {
  48.                     MoveTheChosenBugToTheLeft(ladyBugIndex, flyLenght);
  49.                 }
  50.                 else
  51.                 {
  52.                     MoveTheChosenBugToTheRight(ladyBugIndex, flyLenght);
  53.                 }
  54.  
  55.                 inputLine = Console.ReadLine();
  56.             }
  57.  
  58.             Console.WriteLine(string.Join(" ", ladyBugs));
  59.         }
  60.  
  61.         private static void MoveTheChosenBugToTheRight(int ladyBugIndex, int flyLenght)
  62.         {
  63.             bool isFinishedMoingAround = false;
  64.             while (!isFinishedMoingAround && ladyBugs[ladyBugIndex] != 0)
  65.             {
  66.                 if (ladyBugIndex - flyLenght < 0)
  67.                 {
  68.                     ladyBugs[ladyBugIndex] = 0;
  69.  
  70.                     isFinishedMoingAround = true;
  71.                     break;
  72.                 }
  73.  
  74.                 if (ladyBugs[ladyBugIndex - flyLenght] == 0)
  75.                 {
  76.                     ladyBugs[ladyBugIndex] = 0;
  77.                     ladyBugs[ladyBugIndex - flyLenght] = 1;
  78.  
  79.                     isFinishedMoingAround = true;
  80.                     break;
  81.                 }
  82.  
  83.                 if (ladyBugs[ladyBugIndex - flyLenght] == 1)
  84.                 {
  85.                     flyLenght += flyLenght;
  86.                 }
  87.             }
  88.         }
  89.  
  90.         private static void MoveTheChosenBugToTheLeft(int ladyBugIndex, int flyLenght)
  91.         {
  92.             bool isFinishedMoingAround = false;
  93.             while (!isFinishedMoingAround && ladyBugs[ladyBugIndex] != 0)
  94.             {
  95.                 if (ladyBugIndex + flyLenght >= ladyBugs.Length)
  96.                 {
  97.                     ladyBugs[ladyBugIndex] = 0;
  98.  
  99.                     isFinishedMoingAround = true;
  100.                     break;
  101.                 }
  102.  
  103.                 if (ladyBugs[ladyBugIndex + flyLenght] == 0)
  104.                 {
  105.                     ladyBugs[ladyBugIndex] = 0;
  106.                     ladyBugs[ladyBugIndex + flyLenght] = 1;
  107.  
  108.                     isFinishedMoingAround = true;
  109.                     break;
  110.                 }
  111.  
  112.                 if (ladyBugs[ladyBugIndex + flyLenght] == 1)
  113.                 {
  114.                     flyLenght += flyLenght;
  115.                 }
  116.             }
  117.         }
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment