elena1234

AnonymousThreat

Sep 22nd, 2020 (edited)
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.14 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace AnonymousThreat
  6. {
  7.     class MainClass
  8.     {
  9.         public static void Main(string[] args)
  10.         {
  11.             List<string> listOfStrings = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  12.  
  13.             string command = string.Empty;
  14.             while ((command=Console.ReadLine()) != "3:1")
  15.             {
  16.                 string[] commandArray = command.Split();
  17.  
  18.                 if (commandArray[0] == "merge")
  19.                 {
  20.                     int startIndex = int.Parse(commandArray[1]);
  21.                     startIndex = Math.Max(startIndex, 0);
  22.                     startIndex = Math.Min(startIndex, listOfStrings.Count - 1);
  23.                     int endIndex = int.Parse(commandArray[2]);
  24.                     endIndex = Math.Max(0, endIndex);
  25.                     endIndex = Math.Min(listOfStrings.Count - 1, endIndex);
  26.  
  27.                     string concat = string.Empty;
  28.                     for (int i = startIndex; i <= endIndex; i++)
  29.                     {
  30.                         concat = concat + listOfStrings[i];
  31.                     }
  32.  
  33.                     listOfStrings.RemoveRange(startIndex, endIndex - startIndex + 1);
  34.                     listOfStrings.Insert(startIndex, concat);
  35.  
  36.                 }
  37.  
  38.                 else if (commandArray[0] == "divide")
  39.                 {
  40.                     int indexToDivide = int.Parse(commandArray[1]);
  41.                     indexToDivide = Math.Max(0, indexToDivide);
  42.                     indexToDivide = Math.Min(indexToDivide, listOfStrings.Count - 1);
  43.                     int partitions = int.Parse(commandArray[2]);//how many partitions we going to divide
  44.  
  45.                     string stringToDivide = listOfStrings[indexToDivide];// which string going to be divide
  46.                     int LengthOfSmallPieces = stringToDivide.Length / partitions;// string length of every small piece
  47.                     List<string> listWithSmallPieces = new List<string>();// need a new list to store the divide pieces
  48.  
  49.                     int startIndex = 0;
  50.                     for (int i = 0; i < partitions; i++)
  51.                     {
  52.                         if (i == partitions - 1)//if is need to make the last partition longest
  53.                         {
  54.                             string pieceToAdd = stringToDivide.Substring(startIndex, stringToDivide.Length-startIndex);
  55.                             listWithSmallPieces.Add(pieceToAdd);
  56.                         }
  57.  
  58.                         else
  59.                         {
  60.                             string pieceToAdd = stringToDivide.Substring(startIndex, LengthOfSmallPieces);
  61.                             listWithSmallPieces.Add(pieceToAdd);
  62.                             startIndex = startIndex + LengthOfSmallPieces;
  63.                         }
  64.                     }
  65.  
  66.                     listOfStrings.RemoveAt(indexToDivide);
  67.                     listOfStrings.InsertRange(indexToDivide, listWithSmallPieces);
  68.                 }
  69.             }
  70.  
  71.             Console.WriteLine(string.Join(" ", listOfStrings));
  72.         }
  73.     }
  74. }
Add Comment
Please, Sign In to add comment