Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace _02.ArrayManipulator
- {
- class ArrayManipulator
- {
- static void Main()
- {
- int[] array = Console.ReadLine().Split(new[] { " " },
- StringSplitOptions.RemoveEmptyEntries).
- Select(int.Parse).ToArray();
- string input = Console.ReadLine();
- int leng = array.Length;
- while (input != "end")
- {
- string[] command = input.Split(new[] { " "},
- StringSplitOptions.RemoveEmptyEntries);
- if(command[0] == "exchange")
- {
- int index = int.Parse(command[1]);
- if(index >= leng || index < 0)
- {
- Console.WriteLine("Invalid index");
- }
- else
- {
- array = ExchangeArray(array, index);
- }
- }
- else if (command[0] == "max")
- {
- string type = command[1];
- int max = ReturnMaxNumberOfType(array, type);
- if(max == -1)
- {
- Console.WriteLine("No matches");
- }
- else
- {
- Console.WriteLine("{0}", max);
- }
- }
- else if (command[0] == "min")
- {
- string type = command[1];
- int min = ReturnMinNumberOfType(array, type);
- if (min == -1)
- {
- Console.WriteLine("No matches");
- }
- else
- {
- Console.WriteLine("{0}", min);
- }
- }
- else if (command[0] == "first")
- {
- int count = int.Parse(command[1]);
- string type = command[2];
- if(count > leng)
- {
- Console.WriteLine("Invalid count");
- }
- else
- {
- GetFirstCountNumbersOfType(array, count, type);
- }
- }
- else if (command[0] == "last")
- {
- int count = int.Parse(command[1]);
- string type = command[2];
- if (count > leng)
- {
- Console.WriteLine("Invalid count");
- }
- else
- {
- GetLastCountNumbersOfType(array, count, type);
- }
- }
- input = Console.ReadLine();
- }
- Console.WriteLine("[{0}]", String.Join(", ", array));
- }
- static int[] ExchangeArray(int[] array, int index)
- {
- var newList = new List<int>();
- for (int pos = index + 1; pos < array.Length; pos++)
- {
- newList.Add(array[pos]);
- }
- for (int pos = 0; pos < index + 1; pos++)
- {
- newList.Add(array[pos]);
- }
- return newList.ToArray();
- }
- static int ReturnMaxNumberOfType(int[] array, string type)
- {
- int maxEven = int.MinValue;
- int maxOdd = int.MinValue;
- int indexMaxEven = 0;
- int indexMaxOdd = 0;
- for (int index = 0; index < array.Length; index++)
- {
- int number = array[index];
- if(number % 2 == 0)
- {
- if(number >= maxEven)
- {
- maxEven = number;
- indexMaxEven = index;
- }
- }
- else
- {
- if (number >= maxOdd)
- {
- maxOdd = number;
- indexMaxOdd = index;
- }
- }
- }
- if(type == "even")
- {
- if(maxEven == int.MinValue)
- {
- return -1;
- }
- return indexMaxEven;
- }
- else
- {
- if (maxOdd == int.MinValue)
- {
- return -1;
- }
- return indexMaxOdd;
- }
- }
- static int ReturnMinNumberOfType(int[] array, string type)
- {
- int minEven = int.MaxValue;
- int minOdd = int.MaxValue;
- int indexMinEven = 0;
- int indexMinOdd = 0;
- for (int index = 0; index < array.Length; index++)
- {
- int number = array[index];
- if (number % 2 == 0)
- {
- if (number <= minEven)
- {
- minEven = number;
- indexMinEven = index;
- }
- }
- else
- {
- if (number <= minOdd)
- {
- minOdd = number;
- indexMinOdd = index;
- }
- }
- }
- if (type == "even")
- {
- if (minEven == int.MaxValue)
- {
- return -1;
- }
- return indexMinEven;
- }
- else
- {
- if (minOdd == int.MaxValue)
- {
- return -1;
- }
- return indexMinOdd;
- }
- }
- static void GetFirstCountNumbersOfType(int[] array, int count,string type)
- {
- if(type == "even")
- {
- int[] arrayOfEvens = GetGroupedElementsByType(array).Item2;
- if(arrayOfEvens.Length == 0)
- {
- Console.WriteLine("[]");
- }
- else
- {
- if(count >= arrayOfEvens.Length)
- {
- Console.WriteLine("[{0}]", String.Join(", ",arrayOfEvens));
- }
- else
- {
- Console.WriteLine("[{0}]", String.Join(", ", arrayOfEvens.Take(count)));
- }
- }
- }
- else
- {
- int[] arrayOfOdds = GetGroupedElementsByType(array).Item1;
- if (arrayOfOdds.Length == 0)
- {
- Console.WriteLine("[]");
- }
- else
- {
- if (count >= arrayOfOdds.Length)
- {
- Console.WriteLine("[{0}]", String.Join(", ", arrayOfOdds));
- }
- else
- {
- Console.WriteLine("[{0}]", String.Join(", ", arrayOfOdds.Take(count)));
- }
- }
- }
- }
- static void GetLastCountNumbersOfType(int[] array, int count, string type)
- {
- if (type == "even")
- {
- int[] arrayOfEvens = GetGroupedElementsByType(array).Item2;
- if (arrayOfEvens.Length == 0)
- {
- Console.WriteLine("[]");
- }
- else
- {
- if (count >= arrayOfEvens.Length)
- {
- Console.WriteLine("[{0}]", String.Join(", ", arrayOfEvens));
- }
- else
- {
- Console.WriteLine("[{0}]",
- String.Join(", ", arrayOfEvens.Skip(arrayOfEvens.Length - count).Take(count)));
- }
- }
- }
- else
- {
- int[] arrayOfOdds = GetGroupedElementsByType(array).Item1;
- if (arrayOfOdds.Length == 0)
- {
- Console.WriteLine("[]");
- }
- else
- {
- if (count >= arrayOfOdds.Length)
- {
- Console.WriteLine("[{0}]", String.Join(", ", arrayOfOdds));
- }
- else
- {
- Console.WriteLine("[{0}]",
- String.Join(", ", arrayOfOdds.Skip(arrayOfOdds.Length - count).Take(count)));
- }
- }
- }
- }
- static Tuple<int[],int[]> GetGroupedElementsByType(int[] array)
- {
- var oddElements = new List<int>();
- var evenElements = new List<int>();
- for (int index = 0; index < array.Length; index++)
- {
- int number = array[index];
- if(number % 2 == 1)
- {
- oddElements.Add(number);
- }
- else
- {
- evenElements.Add(number);
- }
- }
- return new Tuple<int[],int[]>(oddElements.ToArray(), evenElements.ToArray());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment