Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Numerics;
- using System.Text.RegularExpressions;
- namespace _14_ExamPreparation3
- {
- class Program
- {
- static void Main(string[] args)
- {
- string[] array = Console.ReadLine()
- .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
- while (true)
- {
- string line = Console.ReadLine();
- if (line == "end")
- {
- break;
- }
- string[] commandParts = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
- switch (commandParts[0])
- {
- case "reverse":
- array = ReverseArrayPart(array, int.Parse(commandParts[2]), int.Parse(commandParts.Last()));
- break;
- case "sort":
- array = SortArrayPart(array, int.Parse(commandParts[2]), int.Parse(commandParts.Last()));
- break;
- case "rollLeft":
- if (int.Parse(commandParts[1]) < 0)
- {
- Console.WriteLine("Invalid input parameters.");
- break;
- }
- array = Roll(array, int.Parse(commandParts[1]), "left");
- break;
- case "rollRight":
- if (int.Parse(commandParts[1]) < 0)
- {
- Console.WriteLine("Invalid input parameters.");
- break;
- }
- array = Roll(array, int.Parse(commandParts[1]), "right");
- break;
- }
- }
- Console.WriteLine($"[{string.Join(", ", array)}]");
- }
- static string[] Roll(string[] array, int count, string side)
- {
- List<string> list = array.ToList();
- if (side == "left")
- {
- for (int i = 0; i < count; i++)
- {
- string firsElement = list[0];
- list.RemoveAt(0);
- list.Insert(list.Count, firsElement);
- }
- }
- if (side == "right")
- {
- for (int i = 0; i < count; i++)
- {
- string LastElement = list[list.Count - 1];
- list.RemoveAt(list.Count - 1);
- list.Insert(0, LastElement);
- }
- }
- array = list.ToArray();
- list.Clear();
- return array;
- }
- static string[] ReverseArrayPart(string[] array, int start, int count)
- {
- if (start < 0 || start >= array.Length)
- {
- Console.WriteLine("Invalid input parameters.");
- return array;
- }
- if (start + count < 0 || count < 0 || start + count - 1>= array.Length)
- {
- Console.WriteLine("Invalid input parameters.");
- return array;
- }
- string[] firstPart = array.Take(start).ToArray();
- string[] reversedPart = array.Skip(start).Take(count).Reverse().ToArray();
- string[] lastPart = array.Skip(start + count).ToArray();
- return firstPart.Concat(reversedPart).Concat(lastPart).ToArray();
- }
- static string[] SortArrayPart(string[] array, int start, int count)
- {
- if (start < 0 || start >= array.Length)
- {
- Console.WriteLine("Invalid input parameters.");
- return array;
- }
- if (start + count < 0 || count < 0 || start + count - 1>= array.Length)
- {
- Console.WriteLine("Invalid input parameters.");
- return array;
- }
- string[] firstPart = array.Take(start).ToArray();
- string[] sortedPart = array.Skip(start).Take(count).OrderBy(s => s).ToArray();
- string[] lastPart = array.Skip(start + count).ToArray();
- return firstPart.Concat(sortedPart).Concat(lastPart).ToArray();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement