Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.36 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 commandsInterpreter
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.  
  14.             List<string> elements = Console.ReadLine().Split(" \t\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
  15.  
  16.             string commands = Console.ReadLine();
  17.             while (commands != "end")
  18.             {
  19.                 string[] snipp = commands.Split();
  20.                 var command = snipp[0];
  21.                 var startIndex = 0;
  22.                 long times = 0;
  23.                 var count = 0;
  24.  
  25.  
  26.                 switch (command)
  27.                 {
  28.                     case "reverse":
  29.                         startIndex = int.Parse(snipp[2]);
  30.                         count = int.Parse(snipp[4]);
  31.                         if (startIndex < 0 || startIndex >= elements.Count || (startIndex + count > elements.Count) || (count < 0))
  32.                         {
  33.                             Console.WriteLine("Invalid input parameters.");
  34.                             break;
  35.                         }
  36.                         elements = ReverseOrder(elements, startIndex, count);
  37.                         break;
  38.                     case "sort":
  39.                         startIndex = int.Parse(snipp[2]);
  40.                         count = int.Parse(snipp[4]);
  41.                         if (startIndex < 0 || startIndex >= elements.Count || startIndex + count > elements.Count || count < 0)
  42.                         {
  43.                             Console.WriteLine("Invalid input parameters.");
  44.                             break;
  45.                         }
  46.                         elements = SortOrder(elements, startIndex, count);
  47.                         break;
  48.                     case "rollLeft":
  49.                         times = int.Parse(snipp[1]);
  50.                         elements = ShiftLeft(elements, times);
  51.                         break;
  52.                     case "rollRight":
  53.                         times = int.Parse(snipp[1]);
  54.                         elements = ShiftRight(elements, times);
  55.                         break;
  56.  
  57.  
  58.                 }
  59.  
  60.                 commands = Console.ReadLine();
  61.  
  62.  
  63.             }
  64.             Console.Write("[");
  65.             Console.Write(string.Join(", ", elements));
  66.             Console.WriteLine("]");
  67.  
  68.  
  69.  
  70.         }
  71.  
  72.         private static List<string> ShiftRight(List<string> elements, long n)
  73.         {
  74.             for (int p = 0; p < n % elements.Count; p++)
  75.             {
  76.                 var temp = elements[elements.Count - 1];
  77.                 for (int i = elements.Count - 1; i > 0; i--)
  78.                 {
  79.                     elements[i] = elements[i - 1];
  80.                 }
  81.                 elements[0] = temp;
  82.             }
  83.             return elements;
  84.         }
  85.  
  86.         private static List<string> ShiftLeft(List<string> elements, long n)
  87.         {
  88.             for (int p = 0; p < n % elements.Count; p++)
  89.             {
  90.                 var temp = elements[0];
  91.                 for (int i = 0; i < elements.Count - 1; i++)
  92.                 {
  93.                     elements[i] = elements[i + 1];
  94.                 }
  95.                 elements[elements.Count - 1] = temp;
  96.             }
  97.             return elements;
  98.         }
  99.  
  100.         private static List<string> SortOrder(List<string> elements, int start, int length)
  101.         {
  102.             List<string> tempArray = new List<string>();
  103.             for (int i = start; i < start + length; i++)
  104.             {
  105.                 tempArray.Add(elements[i]);
  106.             }
  107.             tempArray.Sort();
  108.             for (int i = start; i < start + length; i++)
  109.             {
  110.                 elements[i] = tempArray[i - start];
  111.  
  112.  
  113.             }
  114.             return elements;
  115.         }
  116.  
  117.         private static List<string> ReverseOrder(List<string> elements, int start, int length)
  118.         {
  119.  
  120.             string[] tempArray = new string[length];
  121.             for (int i = start; i < start + length; i++)
  122.             {
  123.                 tempArray[i - start] = elements[i];
  124.             }
  125.             tempArray = tempArray.Reverse().ToArray();
  126.             for (int i = start; i < start + length; i++)
  127.             {
  128.                 elements[i] = tempArray[i - start];
  129.  
  130.  
  131.             }
  132.  
  133.             return elements;
  134.         }
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement