Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- class Program
- {
- static void Main()
- {
- List<int> numbers = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
- string input = string.Empty;
- while ((input = Console.ReadLine()) != "end")
- {
- string[] tokens = input.Split(' ');
- string command = tokens[0];
- switch (command)
- {
- case "exchange": numbers = Exchange(numbers, int.Parse(tokens[1])); break;
- case "max": Max(numbers, tokens[1]); break;
- case "min": Min(numbers, tokens[1]); break;
- case "first": First(numbers, int.Parse(tokens[1]), tokens[2]); break;
- case "last": Last(numbers, int.Parse(tokens[1]), tokens[2]); break;
- }
- }
- Console.WriteLine($"[{string.Join(", ", numbers)}]");
- }
- static void Last(List<int> numbers, int count, string remainderType)
- {
- if (count > numbers.Count)
- {
- Console.WriteLine("Invalid count");
- }
- else
- {
- int remainder = remainderType == "odd" ? 1 : 0;
- List<int> lastNumbers = numbers.Where(x => x % 2 == remainder).Reverse().ToList();
- count = Math.Min(lastNumbers.Count, count);
- lastNumbers = lastNumbers.GetRange(0, count);
- lastNumbers.Reverse();
- Console.WriteLine($"[{string.Join(", ", lastNumbers)}]");
- }
- }
- static void First(List<int> numbers, int count, string remainderType)
- {
- if (count > numbers.Count)
- {
- Console.WriteLine("Invalid count");
- }
- else
- {
- int remainder = remainderType == "odd" ? 1 : 0;
- List<int> firstNumbers = numbers.Where(x => x % 2 == remainder).ToList();
- count = Math.Min(firstNumbers.Count,count);
- firstNumbers = firstNumbers.GetRange(0, count);
- Console.WriteLine($"[{string.Join(", ", firstNumbers)}]");
- }
- }
- static void Min(List<int> numbers, string remainderType)
- {
- int remainder = remainderType == "odd" ? 1 : 0;
- List<int> minNumbers = numbers.Where(x => x % 2 == remainder).ToList();
- Console.WriteLine(minNumbers.Count == 0 ?
- "No matches" : numbers.LastIndexOf(minNumbers.Min()).ToString());
- }
- static void Max(List<int> numbers, string remainderType)
- {
- int remainder = remainderType == "odd" ? 1 : 0;
- List<int> maxNumbers = numbers.Where(x => x % 2 == remainder).ToList();
- Console.WriteLine(maxNumbers.Count == 0 ?
- "No matches" : numbers.LastIndexOf(maxNumbers.Max()).ToString());
- }
- static List<int> Exchange(List<int> numbers, int index)
- {
- if (index < 0 || index >= numbers.Count)
- {
- Console.WriteLine("Invalid index");
- return numbers;
- }
- else
- {
- List<int> leftPart = numbers.GetRange(0, index + 1);
- List<int> rightPart = numbers.GetRange(index + 1, numbers.Count - index - 1);
- return rightPart.Concat(leftPart).ToList();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment