Advertisement
krasi1105

Extremums

Mar 3rd, 2017
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.90 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 _04.Extremums
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int[] numbers = Console.ReadLine()
  14.                            .Split()
  15.                            .Select(int.Parse)
  16.                            .ToArray();
  17.             bool searchedMin = Console.ReadLine().Equals("Min");
  18.             int[] extremeNums = numbers.Select(a => FindExtreme(a, searchedMin)).ToArray();
  19.             Console.WriteLine(string.Join(", ", extremeNums));
  20.             Console.WriteLine(extremeNums.Sum());
  21.         }
  22.  
  23.         private static int FindExtreme(int a, bool searchedMin)
  24.         {
  25.             int extreme = a;
  26.             int digits = GetDigits(a);
  27.             for (int i = 0; i < digits; i++)
  28.             {
  29.                 string aText = a.ToString();
  30.                 int rotated = int.Parse(RotateNumber(a, i));
  31.                 if (searchedMin && rotated < extreme)
  32.                 {
  33.                     extreme = rotated;
  34.                 }
  35.                 else if (!searchedMin && rotated > extreme)
  36.                 {
  37.                     extreme = rotated;
  38.                 }
  39.             }
  40.             return extreme;
  41.         }
  42.  
  43.         private static string RotateNumber(int a, int times)
  44.         {
  45.             List<char> digits = a.ToString().ToList();
  46.             for (int i = 0; i < times; i++)
  47.             {
  48.                 char first = digits[0];
  49.                 digits.RemoveAt(0);
  50.                 digits.Add(first);
  51.             }
  52.             return string.Join("", digits);
  53.         }
  54.  
  55.         private static int GetDigits(int a)
  56.         {
  57.             int counter = 0;
  58.             while (a > 0)
  59.             {
  60.                 a /= 10;
  61.                 counter++;
  62.             }
  63.             return counter;
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement