Advertisement
IvanBorisovG

02. Anonymous Threat

Mar 3rd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.22 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text.RegularExpressions;
  5. using System.Numerics;
  6. using System.Text;
  7.  
  8. namespace _02.AnonymousThreat
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             var elements = Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  15.  
  16.             var input = Console.ReadLine();
  17.  
  18.             while (input != "3:1")
  19.             {
  20.  
  21.                 var data = input.Split();
  22.  
  23.                 string command = data[0];
  24.  
  25.                 switch (command)
  26.                 {
  27.                     case "merge":
  28.                         var startIndex = int.Parse(data[1]);
  29.                         var endIndex = int.Parse(data[2]);
  30.  
  31.                         startIndex = ValideteIndex(startIndex, elements.Count);
  32.                         endIndex = ValideteIndex(endIndex, elements.Count);
  33.  
  34.                         var concatEelements = "";
  35.  
  36.                         for (int i = startIndex; i <= endIndex; i++)
  37.                         {
  38.                             concatEelements += elements[i];
  39.                         }
  40.  
  41.                         for (int i = startIndex; i <= endIndex; i++)
  42.                         {
  43.                             elements.RemoveAt(startIndex);
  44.                         }
  45.  
  46.                         elements.Insert(startIndex, concatEelements);
  47.                         break;
  48.  
  49.  
  50.                         break;
  51.  
  52.                     case "divide":
  53.  
  54.                         var index = int.Parse(data[1]);
  55.                         var partitionsCount = int.Parse(data[2]);
  56.  
  57.                         var partitions = spitedEqually(elements[index], partitionsCount);
  58.  
  59.                         elements.RemoveAt(index);
  60.                         elements.InsertRange(index, partitions);
  61.                         break;
  62.                 }
  63.  
  64.                 input = Console.ReadLine();
  65.             }
  66.  
  67.             Console.WriteLine(string.Join(" ", elements));
  68.  
  69.         }
  70.  
  71.         private static List<string> spitedEqually(string word, int partitionsCount)
  72.         {
  73.             List<string> result = new List<string>();
  74.  
  75.             var part = word.Length / partitionsCount;
  76.  
  77.             while (word.Length >= part)
  78.             {
  79.                 result.Add(word.Substring(0, part));
  80.                 word = word.Substring(part);
  81.             }
  82.  
  83.             if (word != "")
  84.             {
  85.                 result.Add(word);
  86.             }
  87.  
  88.             if (result.Count == partitionsCount)
  89.             {
  90.                 return result;
  91.             }
  92.             else
  93.             {
  94.                 string concatLastTwoElements = result[result.Count - 2] + result[result.Count - 1];
  95.  
  96.                 result.RemoveRange(result.Count - 2, 2);
  97.  
  98.                 result.Add(concatLastTwoElements);
  99.                 return result;
  100.             }
  101.  
  102.         }
  103.  
  104.         private static int ValideteIndex(int index, int length)
  105.         {
  106.  
  107.             if (index < 0)
  108.             {
  109.                 index = 0;
  110.             }
  111.             if (index > length - 1)
  112.             {
  113.                 index = length - 1;
  114.             }
  115.             return index;
  116.         }
  117.     }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement