HRusev

KaminoFactory

May 31st, 2024 (edited)
617
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.50 KB | Source Code | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Reflection.Metadata;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. class KaminoFactory
  10. {
  11.     static void Main()
  12.     {
  13.  
  14.         int number = int.Parse(Console.ReadLine());
  15.         int [] ints = new int[number];
  16.        
  17.  
  18.         string line = string.Empty;
  19.         int countLine = 0;
  20.         List<string> stringsList = new List<string>();
  21.        
  22.         while((line = Console.ReadLine()) != "Clone them!")
  23.         {
  24.             stringsList.Add(line);
  25.             countLine++;        
  26.         }
  27.  
  28.         int pos = 0;
  29.         int row = 0;
  30.         int [,] ints2D = new int[countLine, number];
  31.         int[] DNA = new int[countLine];
  32.         int maxDNA = 0;
  33.  
  34.         //Read int matrix
  35.         foreach(string str in stringsList)
  36.         {
  37.             DNA[row] = 0;
  38.             //Take row
  39.             for(int j = 0; j < str.Length; ++j)
  40.             {      
  41.                 if(str[j] != '!')
  42.                 {
  43.                     ints2D[row, pos] = str[j] - '0';
  44.                     pos++;        
  45.                 }
  46.                 if(pos >= number) break;
  47.  
  48.             }
  49.  
  50.             //Calculate DNA for every row
  51.             row = 0;
  52.             bool isNewSequences = false;    
  53.             int member = 0;
  54.             for(int j = 0; j < number -1; ++j)
  55.             {  
  56.                
  57.                 if(ints2D[row, j] == ints2D[row, j + 1] && ints2D[row, j] == 1 && isNewSequences == false)
  58.                 {
  59.                     isNewSequences = true;      //start sequences
  60.                      member = 1;
  61.                 }
  62.                 if(ints2D[row, j] == ints2D[row, j + 1] && ints2D[row, j] == 1 && isNewSequences == true)
  63.                 {
  64.                     member++;      
  65.                 }
  66.                 else if(isNewSequences)
  67.                 {
  68.                     isNewSequences = false;
  69.                     if(member > DNA[row]) {DNA[row] = member;}
  70.                     member = 1;
  71.                 }
  72.                 if(j >= number) break;
  73.             }
  74.             if(maxDNA < DNA[row]) maxDNA = DNA[row];        //maxDNA max number from aray DNA.
  75.             pos = 0;
  76.             row++;
  77.         }
  78.  
  79.  
  80.         int countMax = 0;
  81.         for(int k = 0; k < DNA.Length; ++k)
  82.             if(DNA[k] == maxDNA) countMax++;
  83.  
  84.         int [] bestSequenceIndex = new int[countMax];
  85.         pos = 0;    
  86.         for(int k = 0; k < DNA.Length; ++k)
  87.             if(DNA[k] == maxDNA) {bestSequenceIndex[pos] = k; pos++;}
  88.  
  89.         int bestLine = 0;
  90.         if(countMax == 1)
  91.         {  
  92.             bestLine = bestSequenceIndex[0];  
  93.            
  94.         }
  95.         else
  96.         {
  97.             int startIndex = number;
  98.             pos = 0;
  99.             row = 0;
  100.             while(row < bestSequenceIndex.Length)
  101.             {
  102.                 for(int k = 0; k < number; ++k)
  103.                 {
  104.                     if(ints2D[bestSequenceIndex[row],k] > 0)
  105.                     {
  106.                         if(startIndex > k) {startIndex = k; bestLine = row;}
  107.                         break;
  108.                     }
  109.                    
  110.                 }
  111.                  row++;  
  112.             }
  113.            
  114.            
  115.  
  116.         }
  117.         Console.WriteLine($"Best DNA sample {bestLine + 1} with sum: {maxDNA}.");    
  118.             for(int j = 0; j < number; ++j)
  119.                 Console.Write($"{ints2D[bestLine, j]} ");      
  120.            
  121.     }
  122. }
  123.  
  124. /*
  125.  
  126. */
  127.  
Advertisement
Add Comment
Please, Sign In to add comment