Advertisement
kokusz19

MestInt.KetszemelyesV10.JatekfaFeltoltve

Jun 3rd, 2018
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.56 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 ketszemelyesV3
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             List<Csucs> fa = new List<Csucs>();
  14.             treeSetup(fa);
  15.  
  16.             Console.WriteLine("#####################  LISTA  #####################");
  17.             kiirFullLista(fa);
  18.  
  19.  
  20.             globaljatekfa.Add(new Jatekfa(0, 0, 1, fa));
  21.  
  22.             Console.WriteLine("#####################  JATEKFAK  #####################");
  23.             jatekfaFeltolt(globaljatekfa);
  24.  
  25.  
  26.             foreach (Jatekfa jatekfa in globaljatekfa)
  27.                 jatekfa.kiir();
  28.  
  29.  
  30.             Console.ReadKey();
  31.         }
  32.  
  33.         static void treeSetup(List<Csucs> lista)
  34.         {
  35.             /*
  36.              *                  A
  37.              *         B                C
  38.              *     D   E   F        G       H
  39.              *   I   J     K                L
  40.              *
  41.              */
  42.  
  43.             lista.Add(new Csucs(0, 1, "A"));
  44.             lista.Add(new Csucs(1, 2, "B"));
  45.             lista.Add(new Csucs(1, 3, "C"));
  46.             lista.Add(new Csucs(2, 4, "D"));
  47.             lista.Add(new Csucs(2, 5, "E"));
  48.             lista.Add(new Csucs(2, 6, "F"));
  49.             lista.Add(new Csucs(3, 7, "G"));
  50.             /*lista.Add(new Csucs(3, 8, "H"));
  51.             lista.Add(new Csucs(4, 9, "I"));
  52.             lista.Add(new Csucs(4, 10, "J"));
  53.             lista.Add(new Csucs(6, 11, "K"));
  54.             lista.Add(new Csucs(8, 12, "L"));
  55.             */
  56.             foreach (Csucs item in lista)
  57.             {
  58.                 foreach (Csucs item2 in lista)
  59.                 {
  60.                     if (item.sorszam != item2.sorszam && item.sorszam == item2.szulosorszam)
  61.                     {
  62.                         item.gyerekekInt.Add(item2.sorszam);
  63.                         item.gyerekekString.Add(lista.Where(x => x.sorszam == item2.sorszam).First().nev);
  64.  
  65.                     }
  66.                 }
  67.                 item.letezik = 1;
  68.             }
  69.         }
  70.  
  71.         public static void kiirFullLista(List<Csucs> lista)
  72.         {
  73.             //Console.WriteLine("###############\t   Lista\t##################");
  74.             foreach (Csucs item in lista)
  75.             {
  76.                 if (item.letezik == 1)
  77.                 {
  78.                     if(item.szulosorszam == 0)
  79.                         Console.Write(item.sorszam + ".\t" + item.nev + "\t(szulo: * gyerekei:");
  80.                     else
  81.                         Console.Write(item.sorszam + ".\t" + item.nev + "\t(szulo: " + item.szulosorszam  + " gyerekei:");
  82.                     if (item.gyerekekInt.Count != 0)
  83.                     {
  84.                         foreach (int item2 in item.gyerekekInt)
  85.                         {
  86.                             Console.Write("  " + item2 + "(" + lista.Find(x => x.sorszam == item2).nev + ")");
  87.                         }
  88.                     }
  89.                     else
  90.                         Console.Write("  nincs gyereke");
  91.                     Console.WriteLine(")");
  92.                 }
  93.             }
  94.             Console.WriteLine("\n\n");
  95.         }
  96.  
  97.         public static List<Jatekfa> globaljatekfa = new List<Jatekfa>();
  98.  
  99.         static void jatekfaFeltolt(List<Jatekfa> jf)
  100.         {
  101.             List<Jatekfa> localjatekfa = new List<Jatekfa>(jf);
  102.  
  103.             foreach (Jatekfa jatekfa in localjatekfa.Where(x=>x.kiterjesztve == 0))
  104.             {
  105.                 jatekfa.kiterjesztve = 1;
  106.                 globaljatekfa.Find(x => x.sorszam == jatekfa.sorszam).kiterjesztve = 1;
  107.  
  108.                 int lepes = jatekfa.lepes + 1;
  109.  
  110.                 int szulo = jatekfa.sorszam;
  111.                
  112.                 // Az összes olyan csúcson végigmegyünk, ami létezik és van(nak) gyerekei
  113.                 foreach (Csucs csucs in jatekfa.adottFaAllapot.Where(x=>x.letezik == 1 && x.gyerekekInt.Count() != 0))
  114.                 {
  115.                     List<Csucs> localfa = new List<Csucs>();
  116.                     foreach (Csucs node in jatekfa.adottFaAllapot)
  117.                         localfa.Add(new Csucs(node.szulosorszam, node.sorszam, node.nev, node.letezik, node.gyerekekInt.ToList(), node.gyerekekString.ToList()));
  118.  
  119.                     List<int> gyerekek = csucs.gyerekekInt.ToList();
  120.  
  121.                     // A csúcs.gyerekek kiürítése
  122.                     localfa.Find(x => x.sorszam == csucs.sorszam).gyerekekInt.Clear();
  123.                     localfa.Find(x => x.sorszam == csucs.sorszam).gyerekekString.Clear();
  124.  
  125.                     // A csúcs gyerekeinek logikai törlése
  126.                     foreach (Csucs gyerek in localfa)
  127.                         if (gyerekek.Contains(gyerek.sorszam))
  128.                         {
  129.                             localfa.Find(x => x.sorszam == gyerek.sorszam).letezik = 0;
  130.                             localfa.Find(x => x.sorszam == gyerek.sorszam).gyerekekString.Clear();
  131.                             localfa.Find(x => x.sorszam == gyerek.sorszam).gyerekekInt.Clear();
  132.                         }
  133.  
  134.                     // A csúcs unokáinak új fába mozgatása
  135.                     foreach (Csucs unoka in localfa)
  136.                         if (gyerekek.Contains(unoka.szulosorszam))
  137.                             localfa.Find(x=>x.sorszam == unoka.sorszam).szulosorszam = 0;
  138.  
  139.                     //kiirFullLista(localfa);
  140.                     globaljatekfa.Add(new Jatekfa(szulo, lepes, globaljatekfa.Count()+1, localfa));
  141.                     jatekfaFeltolt(globaljatekfa);
  142.                 }
  143.             }
  144.         }
  145.  
  146.     }
  147.  
  148.     public class Csucs
  149.     {
  150.         public int szulosorszam;
  151.         public int sorszam;
  152.         public String nev;
  153.         public int letezik;
  154.  
  155.         public List<int> gyerekekInt = new List<int>();
  156.         public List<String> gyerekekString = new List<string>();
  157.  
  158.         public Csucs(int szulosorszam, int sorszam, String nev)
  159.         {
  160.             this.szulosorszam = szulosorszam;
  161.             this.sorszam = sorszam;
  162.             this.nev = nev;
  163.             this.letezik = 1;
  164.         }
  165.  
  166.         public Csucs(int szulosorszam, int sorszam, String nev, int letezik, List<int> gyerekekInt, List<String> gyerekekString)
  167.         {
  168.             this.szulosorszam = szulosorszam;
  169.             this.sorszam = sorszam;
  170.             this.nev = nev;
  171.             this.letezik = letezik;
  172.             this.gyerekekInt = gyerekekInt.ToList();
  173.             this.gyerekekString = gyerekekString.ToList();
  174.         }
  175.     }
  176.  
  177.     public class Jatekfa
  178.     {
  179.         public int szulo;
  180.         public int lepes;
  181.         public int sorszam;
  182.         public List<Csucs> adottFaAllapot;
  183.         public int kiterjesztve;
  184.  
  185.         public Jatekfa(int szulo, int lepes, int sorszam, List<Csucs> adottFaAllapot)
  186.         {
  187.             this.szulo = szulo;
  188.             this.lepes = lepes;
  189.             this.sorszam = sorszam;
  190.             this.adottFaAllapot = adottFaAllapot;
  191.             this.kiterjesztve = 0;
  192.         }
  193.  
  194.         public Jatekfa(int szulo, int lepes, int sorszam, List<Csucs> adottFaAllapot, int kiterjesztve)
  195.         {
  196.             this.szulo = szulo;
  197.             this.lepes = lepes;
  198.             this.sorszam = sorszam;
  199.             this.adottFaAllapot = adottFaAllapot;
  200.             this.kiterjesztve = kiterjesztve;
  201.         }
  202.  
  203.         public void kiir()
  204.         {
  205.              Console.WriteLine("JATEKFA\t" + this.sorszam + ". elem (szulo : " + this.szulo + ", " + this.lepes + ". lepes)");
  206.              ketszemelyesV3.Program.kiirFullLista(this.adottFaAllapot);
  207.         }
  208.     }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement