Advertisement
vaakata

ArrayManipulators_2._06._2016

Jun 3rd, 2016
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.31 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ArrayManipulators_2._06._2016
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             List<long> inputNumbers = Console.ReadLine().Split(' ').Select(long.Parse).ToList();
  14.  
  15.             List<string> commands = new List<string>();
  16.             int indexCommand = 0;
  17.             int cntContains = 0; // times command "contains" was entered
  18.  
  19.             List<int> containsIndex = new List<int>();
  20.  
  21.             do
  22.             {
  23.                 commands.Add(Console.ReadLine());
  24.                 indexCommand++;
  25.  
  26.             } while (commands[indexCommand - 1] != "print");
  27.  
  28.             for (int i = 0; i < commands.Count; i++)
  29.             {
  30.                 string[] currentCommand = commands[i].Split(' ');
  31.  
  32.                 switch (currentCommand[0].ToLower())
  33.                 {
  34.                     case "add":
  35.                         inputNumbers.Insert(int.Parse(currentCommand[1]), long.Parse(currentCommand[2]));
  36.                         break;
  37.  
  38.                     case "addmany":
  39.                         AddMany(inputNumbers, currentCommand);
  40.                         break;
  41.  
  42.                     case "contains":
  43.                         cntContains++;
  44.                         FindingContainIndex(inputNumbers, currentCommand, containsIndex);
  45.                         break;
  46.  
  47.                     case "remove":
  48.                         inputNumbers.RemoveAt(int.Parse(currentCommand[1]));
  49.                         break;
  50.  
  51.                     case "shift":
  52.                         Shift(inputNumbers, currentCommand);
  53.                         break;
  54.  
  55.                     case "sumpairs":
  56.                         SumPairs(inputNumbers);
  57.                         break;
  58.  
  59.                     case "print":
  60.                         if (containsIndex.Count > 0)
  61.                         {
  62.                             for (int cntCont = 0; cntCont < cntContains; cntCont++)
  63.                             {
  64.                                 Console.WriteLine(containsIndex[cntCont]);
  65.                             }
  66.                         }
  67.                         Console.Write('[');
  68.                         Console.Write(string.Join(", ", inputNumbers));
  69.                         Console.WriteLine(']');
  70.                         break;
  71.                 }
  72.             }
  73.         }
  74.  
  75.         public static void SumPairs(List<long> inputNumbers)
  76.         {
  77.             List<long> pairsSum = new List<long>();
  78.  
  79.             for (int iPairs = 0; iPairs < inputNumbers.Count; iPairs++)
  80.             {
  81.                 pairsSum.Add(inputNumbers[iPairs] + inputNumbers[iPairs + 1]);
  82.                 iPairs++;
  83.             }
  84.  
  85.             while (inputNumbers.Count > 0)
  86.             {
  87.                 inputNumbers.RemoveAt(0);
  88.             }
  89.  
  90.             for (int addPairs = 0; addPairs < pairsSum.Count; addPairs++)
  91.             {
  92.                 inputNumbers.Add(pairsSum[addPairs]);
  93.             }
  94.         }
  95.  
  96.         public static void Shift(List<long> inputNumbers, string[] currentCommand)
  97.         {
  98.             // saving shifted elements            
  99.             int numberOfElements = int.Parse(currentCommand[1]); // number of elements for shifiting: 1, 2, 3, etc...
  100.             long[] savedElements = new long[numberOfElements];
  101.  
  102.             for (int iSave = 0; iSave < numberOfElements; iSave++)
  103.             {
  104.                 savedElements[iSave] = inputNumbers[iSave];
  105.             }
  106.  
  107.             // removing first left elements
  108.             int initialCountInpNumbers = inputNumbers.Count;
  109.             while (inputNumbers.Count > initialCountInpNumbers - numberOfElements)
  110.             {
  111.                 inputNumbers.RemoveAt(0);
  112.             }
  113.  
  114.             //adding already saved elements
  115.             for (int iAdd = 0; iAdd < numberOfElements; iAdd++)
  116.             {
  117.                 inputNumbers.Add(savedElements[iAdd]);
  118.             }
  119.         }
  120.  
  121.         public static void FindingContainIndex(List<long> inputNumbers, string[] currentCommand, List<int> containsIndex)
  122.         {
  123.             long containNumber = long.Parse(currentCommand[1]);
  124.  
  125.             for (int iContain = 0; iContain < inputNumbers.Count; iContain++) // searching within the input for a particular number
  126.             {
  127.                 if (inputNumbers[iContain] == containNumber)
  128.                 {
  129.                     containsIndex.Add(iContain);
  130.                     break;
  131.                 }
  132.                 else
  133.                 {
  134.                     containsIndex.Add(-1);
  135.                 }
  136.             }
  137.         }
  138.  
  139.         public static void AddMany(List<long> inputNumbers, string[] command)
  140.         {
  141.             long[] addElements = new long[command.Length - 2];
  142.  
  143.             // saving add elements
  144.             for (int iSave = 0; iSave < command.Length - 2; iSave++)
  145.             {
  146.                 addElements[iSave] = long.Parse(command[iSave + 2]);
  147.             }
  148.  
  149.             // inserting saved elements at particular index
  150.             for (int iInsert = addElements.Length - 1; iInsert >= 0; iInsert--)
  151.             {
  152.                 int index = int.Parse(command[1]);
  153.  
  154.                 inputNumbers.Insert(int.Parse(command[1]), addElements[iInsert]);
  155.             }
  156.         }
  157.  
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement