nikiman8888

Find_The_Largest_Pyramidic_ListOfStrings

Apr 15th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace lab7.Pyramidic
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             int n = int.Parse(Console.ReadLine());
  12.             List<string> saveLines = new List<string>();
  13.             var result = new Dictionary<string, int>();
  14.  
  15.             for (int i = 0; i < n; i++)                                 //save all inputs
  16.             {
  17.                 string inputSequence = Console.ReadLine();
  18.                 saveLines.Add(inputSequence);
  19.             }
  20.             int index = 1;
  21.             for (int row = 0; row  < saveLines.Count; row++)                      // start to iterate all letters and save the pyramidic                                                                                      
  22.             {
  23.                 for (int column = 0; column <saveLines[row].Length; column ++)
  24.                 {
  25.                     string letter = saveLines[row][column].ToString();
  26.                     int size = CountPiramid(saveLines, index, letter);
  27.                     if (!result.ContainsKey(letter))
  28.                     {
  29.                        
  30.                         result.Add(letter, size);
  31.                     }
  32.                     else
  33.                     {
  34.                         if(result[letter] <= size)
  35.                         {
  36.                             result[letter] = size;
  37.                         }
  38.                     }
  39.                    
  40.                 }
  41.                 index++;
  42.             }
  43.             foreach(var res in result                                          //output the biggest pyramidic
  44.                 .OrderByDescending(x =>x.Value)
  45.                 .Take(1))
  46.                                
  47.             {
  48.                 String letter = res.Key;
  49.                 String save = letter + letter;
  50.                 int size = res.Value;
  51.                 for (int i = 0; i < size; i++)
  52.                 {
  53.                     Console.WriteLine(letter);
  54.                     letter += save;  
  55.                 }
  56.             }
  57.            
  58.         }
  59.         static int CountPiramid(List<string> inputs,int index,string letter)       // method find the size of pyramidic
  60.         {
  61.             string saveLetter = letter;
  62.             int counter = 1;
  63.             for (int i = index; i < inputs.Count; i++)
  64.             {
  65.                 if (inputs[i].Contains(IncreaseLetter(letter, saveLetter)))
  66.                 {
  67.                     counter++;
  68.                     letter = letter + saveLetter + saveLetter;
  69.                 }
  70.                 else
  71.                 {
  72.                     break;
  73.                 }
  74.             }
  75.             return counter;
  76.         }
  77.         static string IncreaseLetter(string letter,string saveLetter)     //method increase letter(on each row increasing) the base of pyramidic
  78.         {
  79.             letter = letter + saveLetter + saveLetter;
  80.  
  81.             return letter;
  82.         }
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment