Advertisement
Raizekas

Untitled

Dec 13th, 2015
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.22 KB | None | 0 0
  1.  class Program
  2.     {              
  3.         static void Main(string[] args)
  4.         {                
  5.             const string CFr = "..\\..\\Rezultatai.txt";
  6.             if (File.Exists(CFr))
  7.                 File.Delete(CFr);
  8.  
  9.             Plotai sodas = new Plotai();
  10.             int  ilgiausiosDemesIlgis=0;
  11.             int k=0;
  12.             int kk=0;
  13.             Skaityti(sodas);
  14.            
  15.             Spausdinti(CFr, sodas, "Pradiniai");
  16.             sodas.RikiuotiMin(); // random generatorius
  17.             Spausdinti(CFr, sodas, "Pakeista");
  18.             SkaiciuojaSimbolius(sodas);
  19.             ArLangeliaiNuspalvinti(sodas, out ilgiausiosDemesIlgis,out  k,out  kk);
  20.             Console.WriteLine("{0} : {1} ,{2}",ilgiausiosDemesIlgis,k,kk);
  21.         }
  22.         //-----------------------------------------------------------------------
  23.         static void Skaityti(Plotai sodas)
  24.         {
  25.                 sodas.nn = int.Parse(Console.ReadLine());
  26.                 sodas.mm = int.Parse(Console.ReadLine());
  27.                 for (int i = 0; i < sodas.nn; i++)
  28.                 {
  29.                     for (int j = 0; j < sodas.mm; j++)
  30.                     {
  31.                         char a1 = '.';
  32.  
  33.                         Simbolis ob = new Simbolis(a1);
  34.                         sodas.Dėti(i, j, ob);                          
  35.                 }                        
  36.             }
  37.         }
  38.         //------------------------------------------------------------
  39.         //Spausdina konteinerio duomenis faile lentele.
  40.         //------------------------------------------------------------
  41.         static void Spausdinti(string fv, Plotai sodas, string antraštė)
  42.         {
  43.             string bruksnys = new string('-', 42);
  44.             using (var fr = File.AppendText(fv))
  45.             {
  46.                 fr.WriteLine(antraštė);
  47.                 Console.WriteLine(antraštė);
  48.                 fr.WriteLine(bruksnys);
  49.                 Console.WriteLine(bruksnys);
  50.                 for (int i = 0; i < sodas.nn; i++)
  51.                 {
  52.                     for (int j = 0; j < sodas.mm; j++)
  53.                     {
  54.                         fr.Write("{0}", sodas.Imti(i, j).ToString());
  55.                         Console.Write("{0}", sodas.Imti(i, j).ToString());
  56.                     }
  57.                     fr.WriteLine();
  58.                     Console.WriteLine();
  59.                 }
  60.                 fr.WriteLine(bruksnys);
  61.                 Console.WriteLine(bruksnys);
  62.             }
  63.         }
  64.         //------------------------------------------------------------
  65.         static void SkaiciuojaSimbolius( Plotai sodas)
  66.         {
  67.             int [,] plotas=new int [100,100];
  68.             int[] plotai = new int[100];
  69.             int kiek = 0;
  70.             //int kiek1 = 0;
  71.                  
  72.             for (int i = 0; i < sodas.nn; i++)
  73.             {
  74.                 kiek = 0;
  75.                 for (int j = 0; j < sodas.mm; j++)
  76.                 {
  77.                     if (sodas.Imti(i, j) == '*'
  78.                         || sodas.Imti(i, j) == '*' && j != sodas.mm && sodas.Imti(i, j + 1) == '*'
  79.                         || sodas.Imti(i, j) == '*' && j != sodas.nn && sodas.Imti(i + 1, j) == '*'
  80.                         || sodas.Imti(i, j) == '*' && j != sodas.mm && j != sodas.nn && sodas.Imti(i + 1, j + 1) == '*')
  81.                     {
  82.                         kiek++;
  83.                         plotas[i, kiek] = j;
  84.                     }
  85.                 }
  86.                 plotas[i, 0] = kiek;
  87.             }
  88.             for (int i = 0; i < sodas.nn; i++)
  89.             {
  90.                 // int kiekl = 0;
  91.                 for (int j = 1; j <= plotas[i, 0]; j++)
  92.                     Console.Write("  {0}", plotas[i, j]);
  93.                 Console.WriteLine();
  94.  
  95.             }                
  96.         }
  97.         //Jeigu langelis, kurio koordinatės i ir j yra nuspalintas ir jeigu i ir j nėra lygu x ir y:Jeigu
  98.         // tas langelis jau nėra pridėtas į šitą dėmę:
  99.         //Pridėti langelį į tikrinamųLangelių list'ą
  100.         static void Patikrinti(Plotai sodas, int x, int y, ref List<List<int>> tikrinamasTaskas)
  101.         {        
  102.             for (int i = x-1; i < x+1; i++)
  103.             {
  104.                 for(int j=y-1; j<y+1; j++)
  105.                 {
  106.                     if (i <= 0 && j <= 0 && i > sodas.nn && j > sodas.mm)
  107.                     {
  108.                         if (sodas.Imti(i, j) == '*' && i != x && j != y)
  109.                         {
  110.                             bool arYraTaskas = false;
  111.                             List<int> sublistas = new List<int>();
  112.                             for (int k = 0; k < tikrinamasTaskas.Count; k++)
  113.                             {
  114.                                 if (tikrinamasTaskas[k].Contains(i) && tikrinamasTaskas[k].Contains(j))
  115.                                     arYraTaskas = true;
  116.                             }
  117.                             if (!arYraTaskas)
  118.                             {
  119.                                 sublistas.Add(i);
  120.                                 sublistas.Add(j);
  121.                                 tikrinamasTaskas.Add(sublistas);
  122.                             }
  123.                         }
  124.                     }
  125.                 }
  126.             }
  127.         }
  128.         static void ArLangeliaiNuspalvinti(Plotai sodas, out int ilgiausiosDemesIlgis,out int k,out int kk)
  129.         {
  130.              ilgiausiosDemesIlgis = 0;
  131.              k = 0; kk = 0;
  132.             for (int i=0; i<sodas.nn; i++)    // eini per kiekvieną langelį; i - "ciklo kintamasis"
  133.             {
  134.                 k = i;
  135.                 for(int j=0; j<sodas.mm; j++)
  136.                 {
  137.                      kk = j;
  138.                     List<List<int>> tikrinamiLangeliai = new List<List<int>>();
  139.                     List<int> sublist = new List<int>();
  140.                         // tikrinamiLangeliai - šiuo metu tikrinamų langelių sąrašas
  141.                     if (sodas.Imti(i, j) == '*')
  142.                     {
  143.                         sublist.Add(i);
  144.                         sublist.Add(j);
  145.  
  146.                         tikrinamiLangeliai.Add(sublist);
  147.                     }      // kad kai einam per visus langelius, bent tą langelį (jei jis nuspalvintas), ant kurio dabar "užėjom" patikrintų
  148.                         for (int jj=0; jj<tikrinamiLangeliai.Count; jj++)       // eiti per visus langelius, kuriuos reikės tikrint (pastabaa: tikrinant langelius, gali atsirasti dar naujų tikrinamiLangeliai, . ciklo kintamasis j
  149.                         {
  150.                             Patikrinti(sodas, i, j, ref tikrinamiLangeliai);
  151.                                 // Jeigu tikrinamasis langelis turėjo kokių langelių, kurie tiko, juos reikės pridėti prie tikrinamiLangeliai list'o (greičiausiai tai implementuoti geriausia Patikrinti methode (nebūtinai))
  152.                         }
  153.                        if (tikrinamiLangeliai.Count > ilgiausiosDemesIlgis)
  154.                         {
  155.                             ilgiausiosDemesIlgis = tikrinamiLangeliai.Count;
  156.                         }
  157.                         //Jei didžiausia dėmė: atsiminti dėmės ilgį, atsiminti visilangeliai[i] vietą (kadangi reikia bent vieną dėmės tašką išvesti)
  158.                     }
  159.              }
  160.         }
  161.     }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement