simonradev

LadyBugsProblem

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