nikolayneykov

Untitled

Feb 25th, 2019
145
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.  
  5. class Program
  6. {
  7.     static void Main()
  8.     {
  9.         List<int> numbers = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
  10.  
  11.         string input = string.Empty;
  12.  
  13.         while ((input = Console.ReadLine()) != "end")
  14.         {
  15.             string[] tokens = input.Split(' ');
  16.             string command = tokens[0];
  17.  
  18.             switch (command)
  19.             {
  20.                 case "exchange": numbers = Exchange(numbers, int.Parse(tokens[1])); break;
  21.                 case "max": Max(numbers, tokens[1]); break;
  22.                 case "min": Min(numbers, tokens[1]); break;
  23.                 case "first": First(numbers, int.Parse(tokens[1]), tokens[2]); break;
  24.                 case "last": Last(numbers, int.Parse(tokens[1]), tokens[2]); break;
  25.             }
  26.         }
  27.  
  28.         Console.WriteLine($"[{string.Join(", ", numbers)}]");
  29.     }
  30.  
  31.  
  32.     static void Last(List<int> numbers, int count, string remainderType)
  33.     {
  34.         if (count > numbers.Count)
  35.         {
  36.             Console.WriteLine("Invalid count");
  37.         }
  38.         else
  39.         {
  40.             int remainder = remainderType == "odd" ? 1 : 0;
  41.             List<int> lastNumbers = numbers.Where(x => x % 2 == remainder).Reverse().ToList();
  42.             count = Math.Min(lastNumbers.Count, count);
  43.             lastNumbers = lastNumbers.GetRange(0, count);
  44.             lastNumbers.Reverse();
  45.             Console.WriteLine($"[{string.Join(", ", lastNumbers)}]");
  46.         }
  47.     }
  48.  
  49.     static void First(List<int> numbers, int count, string remainderType)
  50.     {
  51.         if (count > numbers.Count)
  52.         {
  53.             Console.WriteLine("Invalid count");
  54.         }
  55.         else
  56.         {
  57.             int remainder = remainderType == "odd" ? 1 : 0;
  58.             List<int> firstNumbers = numbers.Where(x => x % 2 == remainder).ToList();
  59.             count = Math.Min(firstNumbers.Count,count);
  60.             firstNumbers = firstNumbers.GetRange(0, count);
  61.             Console.WriteLine($"[{string.Join(", ", firstNumbers)}]");
  62.         }
  63.     }
  64.  
  65.     static void Min(List<int> numbers, string remainderType)
  66.     {
  67.         int remainder = remainderType == "odd" ? 1 : 0;
  68.         List<int> minNumbers = numbers.Where(x => x % 2 == remainder).ToList();
  69.         Console.WriteLine(minNumbers.Count == 0 ?
  70.             "No matches" : numbers.LastIndexOf(minNumbers.Min()).ToString());
  71.     }
  72.  
  73.     static void Max(List<int> numbers, string remainderType)
  74.     {
  75.         int remainder = remainderType == "odd" ? 1 : 0;
  76.         List<int> maxNumbers = numbers.Where(x => x % 2 == remainder).ToList();
  77.         Console.WriteLine(maxNumbers.Count == 0 ?
  78.             "No matches" : numbers.LastIndexOf(maxNumbers.Max()).ToString());
  79.     }
  80.  
  81.     static List<int> Exchange(List<int> numbers, int index)
  82.     {
  83.         if (index < 0 || index >= numbers.Count)
  84.         {
  85.             Console.WriteLine("Invalid index");
  86.             return numbers;
  87.         }
  88.         else
  89.         {
  90.             List<int> leftPart = numbers.GetRange(0, index + 1);
  91.             List<int> rightPart = numbers.GetRange(index + 1, numbers.Count - index - 1);
  92.             return rightPart.Concat(leftPart).ToList();
  93.         }
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment