Advertisement
elena1234

AnonymousTreat-withStringBuilder()

Dec 8th, 2020 (edited)
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.35 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3. using System.Linq;
  4. using System.Collections.Generic;
  5.  
  6. namespace AnonimusTreat
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             var list = Console.ReadLine().Split().ToList();
  13.  
  14.             string command = string.Empty;
  15.             while ((command = Console.ReadLine()) != "3:1")
  16.             {
  17.                 string[] commandArray = command.Split();
  18.                 if (commandArray[0] == "merge")
  19.                 {
  20.                     int startIndex = int.Parse(commandArray[1]);
  21.                     int validCurrentStartIndex = Math.Max(0, startIndex);
  22.                     int validStartIndex = Math.Min(list.Count - 1, validCurrentStartIndex);
  23.                     int endIndex = int.Parse(commandArray[2]);
  24.                     int validCurrentEndIndex = Math.Max(0, endIndex);
  25.                     int validEndIndex = Math.Min(list.Count - 1, validCurrentEndIndex);
  26.  
  27.                     string stringForMerge = string.Empty;
  28.                     int CountToRemove = validEndIndex - validStartIndex+ 1;
  29.                     for (int i = validStartIndex; i <= validEndIndex; i++)
  30.                     {
  31.                         stringForMerge += list[i];
  32.                     }
  33.  
  34.                     list.RemoveRange(validStartIndex, CountToRemove);
  35.                     list.Insert(validStartIndex, stringForMerge);
  36.                 }
  37.  
  38.                 else if (commandArray[0] == "divide")
  39.                 {
  40.                     int index = int.Parse(commandArray[1]);
  41.                     int validCurrentIndex = Math.Max(0, index);
  42.                     int validIndex = Math.Min(validCurrentIndex, list.Count - 1);
  43.                     int partitions = int.Parse(commandArray[2]);
  44.                     string stringForDivide = list[validIndex];
  45.                     var sb = new StringBuilder(stringForDivide);
  46.                     if (sb.Length % partitions == 0)
  47.                     {
  48.                         int lengthDivide = sb.Length / partitions;
  49.                         int indexDivide = lengthDivide;
  50.                         for (int i = 0; i <= sb.Length  - lengthDivide; i++)
  51.                         {
  52.                             if (i == indexDivide)
  53.                             {
  54.                                 sb.Insert(i, " ");
  55.                                 indexDivide += lengthDivide + 1;
  56.                             }
  57.                         }
  58.                     }
  59.  
  60.                     else if (sb.Length % partitions != 0)
  61.                     {
  62.                         int lengthDivide = sb.Length / partitions;
  63.                         int indexDivide = lengthDivide;
  64.                         int lastPartitionLength = sb.Length- (lengthDivide * (partitions-1));
  65.                         for (int i = 0; i <= sb.Length - lastPartitionLength; i++)
  66.                         {
  67.                             if (i == indexDivide)
  68.                             {
  69.                                 sb.Insert(i, " ");
  70.                                 indexDivide += lengthDivide + 1;
  71.                             }
  72.                         }
  73.                     }
  74.  
  75.                     list.RemoveAt(index);
  76.                     list.InsertRange(index, sb.ToString().Split());
  77.                 }  
  78.             }
  79.  
  80.             Console.WriteLine(string.Join(" ",list));
  81.         }
  82.     }
  83. }
  84.  
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement