Advertisement
Guest User

C# Fundamentals - September 2019 - Lists

a guest
Oct 16th, 2019
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.25 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. //using System.Linq;
  5.  
  6. namespace Lists
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.  
  13.             int task = 0;
  14.  
  15.             do
  16.             {
  17.                 Console.WriteLine("1 - Gauss' Trick");
  18.                 Console.WriteLine("2 - Merging lists");
  19.                 Console.WriteLine("3 - Sort products");
  20.                 Console.WriteLine("4 - Remove negative numbers");
  21.                 Console.WriteLine("5 - Sum adjacent equal numbers");
  22.                 Console.WriteLine("6 - List manipulation (Advanced)");
  23.                 Console.WriteLine("9 - Exit");
  24.                 task = int.Parse(Console.ReadLine());
  25.  
  26.                 switch (task)
  27.                 {
  28.  
  29.                     case 1:
  30.  
  31.                         var numbers = new List<int>() { 1, 2, 3, 4, 5, 32, 64, 10, 465 };
  32.                         GaussTrick(numbers);
  33.  
  34.                         break;
  35.                     case 2:
  36.  
  37.                         var primaryList = new List<int> { 1, 2, 3, 4, 5 };
  38.                         var secondaryList = new List<int> { 6, 7, 8 };
  39.                         MergeLists(primaryList, secondaryList);
  40.  
  41.                         break;
  42.                     case 3:
  43.  
  44.                         var productList = new List<string> { "Potatos", "Tomatos", "Onions", "Apples" };
  45.  
  46.                         SortProducts(productList);
  47.  
  48.                         Console.WriteLine(string.Join("\n", productList)); // \n is a new line
  49.  
  50.                         break;
  51.  
  52.                     case 4:
  53.  
  54.                         PrintNumbersTask();
  55.                         break;
  56.  
  57.                     case 5:
  58.  
  59.                         PrintSequenceNumbers();
  60.                         break;
  61.  
  62.                     case 6:
  63.  
  64.                         ListManipulation();
  65.                         break;
  66.  
  67.                     default:
  68.                         break;
  69.                 }
  70.  
  71.                 Console.WriteLine("");
  72.             } while (task != 9);
  73.         }
  74.  
  75.         private static void PrintSequenceNumbers()
  76.         {
  77.             var sequenceListA = new List<int> { 3, 3, 6, 1 };
  78.             var sequenceListB = new List<int> { 8, 2, 2, 4, 8, 16 };
  79.             var sequenceListC = new List<int> { 5, 4, 2, 1, 1, 4 };
  80.             var sequenceListD = new List<int> { 1, 1 };
  81.             var sequenceListE = new List<int> { 1 };
  82.  
  83.             SumAdjacentEqualNumbers(sequenceListA);
  84.             SumAdjacentEqualNumbers(sequenceListB);
  85.             SumAdjacentEqualNumbers(sequenceListC);
  86.             SumAdjacentEqualNumbers(sequenceListD);
  87.             SumAdjacentEqualNumbers(sequenceListE);
  88.         }
  89.  
  90.         private static void PrintNumbersTask()
  91.         {
  92.             var numbersListA = new List<int> { 10, -5, 7, 9, -33, 50 };
  93.             var numbersListB = new List<int> { 7, -2, -10, -10, -10, 1 };
  94.             var numbersListC = new List<int> { -1, -2, -10, -5, -33 };
  95.  
  96.             RemoveNegativesAndReverse(numbersListA);
  97.             RemoveNegativesAndReverse(numbersListB);
  98.             RemoveNegativesAndReverse(numbersListC);
  99.         }
  100.  
  101.         static void GaussTrick(List<int> seriesOfNumbers)
  102.         {
  103.             // retrieve and keep the initial count
  104.             var itemCount = seriesOfNumbers.Count;
  105.  
  106.             // iterate the amount of times as the count
  107.             for (int i = 0; i < itemCount / 2; i++)
  108.             {
  109.                 // retrieve relevant values
  110.                 var valueAtIndexPosition = seriesOfNumbers[i];
  111.                 var valueOfIndexAtLastPosition = seriesOfNumbers.Count - 1; // zero based
  112.                 var valueAtLastPosition = seriesOfNumbers[valueOfIndexAtLastPosition];
  113.  
  114.                 // sum the index and current last value
  115.                 var iterationSum = valueAtIndexPosition + valueAtLastPosition;
  116.  
  117.                 // assign the summed value to the iteration index position
  118.                 seriesOfNumbers[i] = iterationSum;
  119.  
  120.                 // Remove the item at the last position
  121.                 seriesOfNumbers.RemoveAt(valueOfIndexAtLastPosition);
  122.             }
  123.  
  124.             Console.WriteLine(string.Join(" ", seriesOfNumbers));
  125.         }
  126.  
  127.         static void MergeLists(List<int> primaryList, List<int> secondaryList)
  128.         {
  129.             // Get the lists counts and get the size of the larger list.
  130.             var primaryListCount = primaryList.Count;
  131.             var secondaryListCount = secondaryList.Count;
  132.             var largerListCount = Math.Max(primaryListCount, secondaryListCount);
  133.  
  134.             // Create a new list to store the merged values with the larger list size
  135.             List<int> mergedList = new List<int>();
  136.  
  137.             // iterate
  138.             for (int i = 0; i < largerListCount; i++)
  139.             {
  140.                 if (i < primaryListCount)
  141.                 {
  142.                     mergedList.Add(primaryList[i]);
  143.                 }
  144.  
  145.                 if (i < secondaryListCount)
  146.                 {
  147.                     mergedList.Add(secondaryList[i]);
  148.                 }
  149.             }
  150.  
  151.             Console.WriteLine(string.Join(" ", mergedList));
  152.         }
  153.  
  154.         static void SortProducts(List<string> productNames)
  155.         {
  156.             // sort the list values
  157.             productNames.Sort();
  158.  
  159.             // iterate through all product names after the sort
  160.             for (int i = 0; i < productNames.Count; i++)
  161.             {
  162.                 // prepend the item number -> "1.Apples" with the index value
  163.                 productNames[i] = $"{i + 1}.{productNames[i]}";
  164.             }
  165.  
  166.             // Do nothing, return nothing
  167.         }
  168.  
  169.         static void RemoveNegativesAndReverse(List<int> values)
  170.         {
  171.             for (int i = 0; i < values.Count; i++)
  172.             {
  173.                 if (i < values.Count && values[i] < 0)
  174.                 {
  175.                     values.RemoveAt(i--); // remove at i - 1, since a previous position is removed
  176.                 }
  177.             }
  178.  
  179.             values.Reverse();
  180.  
  181.             if (values.Count < 1)
  182.             {
  183.                 Console.WriteLine("Empty");
  184.             }
  185.             else
  186.             {
  187.                 Console.WriteLine(string.Join(" ", values));
  188.             }
  189.         }
  190.  
  191.         static void SumAdjacentEqualNumbers(List<int> values)
  192.         {
  193.             for (int i = 0; i < values.Count; i++)
  194.             {
  195.                 if (values.Count <= i + 1) // exit if the list is with 1 item
  196.                 {
  197.                     break;
  198.                 }
  199.  
  200.                 var valueAtIndex = values[i];
  201.                 var valueAfterIndex = values[i + 1];
  202.  
  203.                 if (values[i] == valueAfterIndex)
  204.                 {
  205.                     values[i] = valueAtIndex + valueAfterIndex;
  206.                     values.RemoveAt(i + 1);
  207.                     i = -1; // reset index to start from the begginning
  208.                 }
  209.             }
  210.  
  211.             Console.WriteLine(string.Join(" ", values));
  212.         }
  213.  
  214.         static void ListManipulation()
  215.         {
  216.             string numbersString = "4 19 2 53 6 43";
  217.  
  218.             Console.WriteLine("Numbers: " + numbersString);
  219.             var numbers = numbersString
  220.                 .Split() // returns string[]
  221.                 .Select(int.Parse) // retrieves the result of the in.Parse method
  222.                 .ToList(); // convert the result to a List<int>
  223.  
  224.             var line = string.Empty;
  225.  
  226.             do
  227.             {
  228.                 Console.WriteLine("Enter a command:");
  229.                 line = Console.ReadLine();
  230.  
  231.                 string[] lineParameters = line.Split();
  232.  
  233.                 switch (lineParameters[0])
  234.                 {
  235.                     case "Add":
  236.  
  237.                         int numberToAdd = int.Parse(lineParameters[1]);
  238.                         numbers.Add(numberToAdd);
  239.                         break;
  240.  
  241.                     case "Remove":
  242.  
  243.                         int numberToRemove = int.Parse(lineParameters[1]);
  244.                         numbers.Remove(numberToRemove);
  245.                         break;
  246.  
  247.                     case "RemoveAt":
  248.  
  249.                         int indexToRemove = int.Parse(lineParameters[1]);
  250.                         numbers.RemoveAt(indexToRemove);
  251.                         break;
  252.  
  253.                     case "Insert":
  254.  
  255.                         int numberToInsert = int.Parse(lineParameters[1]);
  256.                         int indexToInsert = int.Parse(lineParameters[2]);
  257.                         numbers.Insert(indexToInsert, numberToInsert);
  258.                         break;
  259.  
  260.                     case "Contains":
  261.  
  262.                         int containsNumber = int.Parse(lineParameters[1]);
  263.                         OutputContains(numbers, containsNumber);
  264.                         break;
  265.  
  266.                     case "PrintEven":
  267.  
  268.                         PrintEven(numbers);
  269.                         break;
  270.  
  271.                     case "PrintOdd":
  272.  
  273.                         PrintOdd(numbers);
  274.                         break;
  275.  
  276.                     case "GetSum":
  277.  
  278.                         GetSum(numbers);
  279.  
  280.                         break;
  281.                     case "Filter":
  282.  
  283.                         string condition = lineParameters[1];
  284.                         int filterNumber = int.Parse(lineParameters[2]);
  285.  
  286.                         FilterAndPrint(numbers, condition, filterNumber);
  287.  
  288.                         break;
  289.                     default:
  290.                         break;
  291.                 }
  292.  
  293.             } while (line == "End");
  294.         }
  295.  
  296.         private static string ArrayParsingWithLinq()
  297.         {
  298.             string numbersString = "4 19 2 53 6 43";
  299.             //string numbersString = "2 13 43 876 342 23 543";
  300.  
  301.             var arrayOfNumbers = numbersString.Split().Select(int.Parse).ToList();
  302.             int number = 5;
  303.  
  304.             var resultOfJoin = string.Join(" ", arrayOfNumbers.Where(x => x < 5));
  305.             return numbersString;
  306.         }
  307.  
  308.         private static void FilterAndPrint(List<int> numbers, string condition, int filterNumber)
  309.         {
  310.             foreach (var item in numbers)
  311.             {
  312.                 switch (condition)
  313.                 {
  314.                     case "<":
  315.  
  316.                         if (item < filterNumber)
  317.                         {
  318.                             Console.Write(item + " ");
  319.                         }
  320.  
  321.                         break;
  322.                     case ">":
  323.                         if (item > filterNumber)
  324.                         {
  325.                             Console.Write(item + " ");
  326.                         }
  327.                         break;
  328.                     case ">=":
  329.                         if (item >= filterNumber)
  330.                         {
  331.                             Console.Write(item + " ");
  332.                         }
  333.  
  334.                         break;
  335.                     case "<=":
  336.                         if (item <= filterNumber)
  337.                         {
  338.                             Console.Write(item + " ");
  339.                         }
  340.                         break;
  341.                     default:
  342.                         break;
  343.                 }
  344.             }
  345.         }
  346.  
  347.         private static void GetSum(List<int> numbers)
  348.         {
  349.             int sum = 0;
  350.  
  351.             foreach (var item in numbers)
  352.             {
  353.                 sum += item;
  354.             }
  355.  
  356.             Console.WriteLine(sum);
  357.         }
  358.  
  359.         private static void PrintOdd(List<int> numbers)
  360.         {
  361.             foreach (var item in numbers)
  362.             {
  363.                 if (item % 2 == 1) // even
  364.                 {
  365.                     Console.Write(item + " ");
  366.                 }
  367.             }
  368.         }
  369.  
  370.         private static void PrintEven(List<int> numbers)
  371.         {
  372.             foreach (var item in numbers)
  373.             {
  374.                 if (item % 2 == 0) // even
  375.                 {
  376.                     Console.Write(item + " ");
  377.                 }
  378.             }
  379.         }
  380.  
  381.         private static void OutputContains(List<int> numbers, int containsNumber)
  382.         {
  383.             if (numbers.Contains(containsNumber))
  384.             {
  385.                 Console.WriteLine("Yes");
  386.             }
  387.             else
  388.             {
  389.                 Console.WriteLine("No such number");
  390.             }
  391.         }
  392.     }
  393. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement