Advertisement
YavorGrancharov

02. Command Interpreter

Nov 4th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.38 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace Command_Interpreter
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             List<string> list = Console.ReadLine()
  13.                 .Split(new char[] { ' ', '\t', '\r', '\n' },StringSplitOptions.RemoveEmptyEntries)
  14.                 .ToList();
  15.  
  16.             string input = Console.ReadLine();
  17.             while (input != "end")
  18.             {
  19.                 int start = 0;
  20.                 int count = 0;
  21.                 string[] tokens = input
  22.                     .Split(new char[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
  23.                     .ToArray();
  24.                 switch (tokens[0])
  25.                 {
  26.                     case "reverse":
  27.                         start = int.Parse(tokens[2]);
  28.                         count = int.Parse(tokens[4]);
  29.                         Reverse(list,start,count);
  30.                         break;
  31.                     case "sort":
  32.                         start = int.Parse(tokens[2]);
  33.                         count = int.Parse(tokens[4]);
  34.                         Sort(list, start, count);
  35.                         break;
  36.                     case "rollLeft":
  37.                         count = int.Parse(tokens[1]);
  38.                         rollLeft(list, count);
  39.                         break;
  40.                     case "rollRight":
  41.                         count = int.Parse(tokens[1]);
  42.                         rollRight(list, count);
  43.                         break;
  44.                     default:
  45.                         break;
  46.                 }
  47.                 input = Console.ReadLine();
  48.             }
  49.             Console.WriteLine("[{0}]",string.Join(", ",list));
  50.         }
  51.         private static void Reverse (List<string> list, int start, int count)
  52.         {
  53.             if (start < 0 || start >= list.Count || count < 0 || start + count - 1 >= list.Count)
  54.             {
  55.                 Console.WriteLine("Invalid input parameters.");
  56.                 return;
  57.             }
  58.             list.Reverse(start, count);
  59.         }
  60.         private static void Sort (List<string> list, int start, int count)
  61.         {
  62.             if (start < 0 || start >= list.Count || count < 0 || start + count - 1 >= list.Count)
  63.             {
  64.                 Console.WriteLine("Invalid input parameters.");
  65.                 return;
  66.             }
  67.             list.Sort(start, count, StringComparer.InvariantCulture);
  68.         }
  69.         private static void rollLeft (List<string> list, int count)
  70.         {
  71.             if (count < 0)
  72.             {
  73.                 Console.WriteLine("Invalid input parameters.");
  74.                 return;
  75.             }
  76.             int pos = count % list.Count;
  77.             for (int i = 0; i < pos; i++)
  78.             {
  79.                 list.Add(list[0]);
  80.                 list.Remove(list[0]);
  81.             }
  82.         }
  83.         private static void rollRight (List<string> list, int count)
  84.         {
  85.             if (count < 0)
  86.             {
  87.                 Console.WriteLine("Invalid input parameters.");
  88.                 return;
  89.             }
  90.             int pos = count % list.Count;
  91.             for (int i = 0; i < pos; i++)
  92.             {
  93.                 list.Insert(0, list[list.Count - 1]);
  94.                 list.RemoveAt(list.Count - 1);
  95.             }
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement