kvadrat4o

CommandInterpreter

Jul 4th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.21 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 CommandInterpreter
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             string[] arr = Console.ReadLine().Split(new [] {' '},StringSplitOptions.RemoveEmptyEntries).ToArray();
  14.             var input = Console.ReadLine();
  15.             var startIndex = 0;
  16.             var endIndex = 0;
  17.             while (input != "end")
  18.             {
  19.                 var commandLine = input.Split(' ').ToList();
  20.                 var command = commandLine[0];
  21.                 switch (command)
  22.                 {
  23.                     case "reverse" :
  24.                         startIndex = int.Parse(commandLine[2]);
  25.                         endIndex = int.Parse(commandLine[4]);
  26.                         if (startIndex < 0 ||endIndex > arr.Length)
  27.                         {
  28.                             Console.WriteLine("Invalid input parameters.");
  29.                             break;
  30.                         }
  31.                         else
  32.                         {
  33.                             arr = arr.Take(startIndex).Concat(arr.Skip(startIndex).Take(endIndex).Reverse()).Concat(arr.Skip(endIndex).Take(arr.Length - endIndex)).ToArray();
  34.                             //arr = arr.Take(startIndex).Concat(arr.Skip(startIndex).Take(endIndex).Reverse()).Concat(arr.Skip(endIndex).Take(arr.Length - endIndex)).ToArray();
  35.                             break;
  36.                         }
  37.                     case "sort":
  38.                         startIndex = int.Parse(commandLine[2]);
  39.                         endIndex = int.Parse(commandLine[4]);
  40.                         if (startIndex < 0 || endIndex > arr.Length)
  41.                         {
  42.                             Console.WriteLine("Invalid input parameters.");
  43.                             break;
  44.                         }
  45.                         else
  46.                         {
  47.                             arr = arr.Take(startIndex).Concat(arr.Skip(startIndex).Take(endIndex ).OrderBy(a => a)).Concat(arr.Skip(endIndex).Take(arr.Length - endIndex)).ToArray();
  48.                             break;
  49.                         }
  50.                     case "rollLeft":
  51.                         startIndex = int.Parse(commandLine[1]);
  52.                         if (startIndex < 0 || startIndex > arr.Length)
  53.                         {
  54.                             Console.WriteLine("Invalid input parameters.");
  55.                             break;
  56.                         }
  57.                         else
  58.                         {
  59.                             for (int i = 0; i < startIndex; i++)
  60.                             {
  61.                                 var temp = arr[0];
  62.                                 //arr[0] = arr[arr.Length - 1];
  63.                                 //arr[(i + 1) % arr.Length] = arr[i];
  64.                                 arr = arr.Skip(1).Take(arr.Length - 1).Concat(arr.Take(1)).ToArray();
  65.                             }
  66.                             break;
  67.                         }
  68.                     case "rollRight":
  69.                         startIndex = int.Parse(commandLine[1]);
  70.                         if (startIndex < 0 || startIndex > arr.Length)
  71.                         {
  72.                             Console.WriteLine("Invalid input parameters.");
  73.                             break;
  74.                         }
  75.                         else
  76.                         {
  77.                             for (int i = 0; i < startIndex; i++)
  78.                             {
  79.                                 var temp = arr[0];
  80.                                 //arr[arr.Length - 1] = arr[0];
  81.                                 //arr[(i - 1) % arr.Length] = arr[i];
  82.                                 arr = arr.Skip(arr.Length - 1).Take(1).Concat(arr.Take(arr.Length - 1)).ToArray();
  83.                             }
  84.                             break;
  85.                         }
  86.                     default:
  87.                         break;
  88.                 }
  89.                 input = Console.ReadLine();
  90.                 commandLine = input.Split(' ').ToList();
  91.             }
  92.             Console.WriteLine("[" + string.Join(", ",arr) + "]");
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment