Advertisement
kokusz19

MestInt.KetszemelyesV2.singleplayer.withoutWINsituation

May 26th, 2018
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.27 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.  *                  A
  8.  *         B                C
  9.  *     D   E   F        G       H
  10.  *   I   J     K                L
  11.  * */
  12. namespace ketszemelyesV1
  13. {
  14.     class Csucs
  15.     {
  16.         public int szulosorszam;
  17.         public int sorszam;
  18.         public String nev;
  19.         public int letezik;
  20.  
  21.         public List<int> gyerekekInt = new List<int>();
  22.         public List<String> gyerekekString = new List<string>();
  23.  
  24.         public Csucs(int szulosorszam, int sorszam, String nev)
  25.         {
  26.             this.szulosorszam = szulosorszam;
  27.             this.sorszam = sorszam;
  28.             this.nev = nev;
  29.         }
  30.     }
  31.  
  32.     class Program
  33.     {
  34.  
  35.         static void treeSetup(List<Csucs> lista)
  36.         {
  37.             lista.Add(new Csucs(0, 1, "A"));
  38.             lista.Add(new Csucs(1, 2, "B"));
  39.             lista.Add(new Csucs(1, 3, "C"));
  40.             lista.Add(new Csucs(2, 4, "D"));
  41.             lista.Add(new Csucs(2, 5, "E"));
  42.             lista.Add(new Csucs(2, 6, "F"));
  43.             lista.Add(new Csucs(3, 7, "G"));
  44.             lista.Add(new Csucs(3, 8, "H"));
  45.             lista.Add(new Csucs(4, 9, "I"));
  46.             lista.Add(new Csucs(4, 10, "J"));
  47.             lista.Add(new Csucs(6, 11, "K"));
  48.             lista.Add(new Csucs(8, 12, "L"));
  49.  
  50.             foreach (Csucs item in lista)
  51.             {
  52.                 foreach (Csucs item2 in lista)
  53.                 {
  54.                     if (item.sorszam != item2.sorszam && item.sorszam == item2.szulosorszam)
  55.                     {
  56.                         item.gyerekekInt.Add(item2.sorszam);
  57.                         item.gyerekekString.Add(lista.Where(x => x.sorszam == item2.sorszam).First().nev);
  58.  
  59.                     }
  60.                 }
  61.                 item.letezik = 1;
  62.             }
  63.         }
  64.  
  65.         static void kiirFullLista(List<Csucs> lista)
  66.         {
  67.             Console.WriteLine();
  68.             foreach (Csucs item in lista)
  69.             {
  70.                 if (item.letezik == 1)
  71.                 {
  72.                     Console.Write(item.sorszam + ".\t" + item.nev + "\t(szulo: " + item.szulosorszam + " gyerekei:");
  73.                     if (item.gyerekekInt.Count != 0)
  74.                     {
  75.                         foreach (int item2 in item.gyerekekInt)
  76.                         {
  77.                             Console.Write("  " + item2 + "(" + lista.Find(x => x.sorszam == item2).nev + ")");
  78.                         }
  79.                     }
  80.                     else
  81.                         Console.Write("  level elem");
  82.                     Console.WriteLine(")");
  83.                 }
  84.             }
  85.         }
  86.  
  87.         static void csucsGyerekeiTorlese(List<Csucs> lista)
  88.         {
  89.             hiba: Console.WriteLine();
  90.             int sorszam = int.Parse(Console.ReadLine());
  91.  
  92.             if (lista.Find(x => x.sorszam == sorszam).gyerekekInt.Count() == 0)
  93.             {
  94.                 Console.WriteLine("Nincs gyereke a csucsnak, minimum egy gyereket torolni kell, valasszon ujra!");
  95.                 goto hiba;
  96.             }
  97.  
  98.             else
  99.             {
  100.                 Csucs szulo = lista.Find(x => x.sorszam == sorszam);
  101.  
  102.                 // unoka.szulosorszam updateje  
  103.                 List<int> gyerekek = new List<int>();
  104.                 foreach (Csucs gyerek in lista.Where(x => x.szulosorszam == sorszam))
  105.                     foreach (int unoka in gyerek.gyerekekInt)
  106.                         gyerekek.Add(unoka);
  107.                 foreach (Csucs item in lista)
  108.                     if(gyerekek.Contains(item.sorszam) && item.letezik == 1)
  109.                         item.szulosorszam = sorszam;
  110.                
  111.                 // szülő gyerekeinek torlese
  112.                 foreach (int item in szulo.gyerekekInt)
  113.                 {
  114.                     foreach (var item2 in lista)
  115.                     {
  116.                         if (item2.sorszam == item)
  117.                             lista.Find(x => x == item2).letezik = 0;
  118.                     }
  119.                 }
  120.  
  121.                 // szülő.gyerekei update
  122.                 lista.Find(x => x.sorszam == sorszam).gyerekekInt.Clear();
  123.                 lista.Find(x => x.sorszam == sorszam).gyerekekString.Clear();
  124.                 foreach (Csucs item in lista)
  125.                 {
  126.                     if(item.szulosorszam == sorszam && item.letezik == 1)
  127.                     {
  128.                         lista.Find(x => x.sorszam == sorszam).gyerekekInt.Add(item.sorszam);
  129.                         lista.Find(x => x.sorszam == sorszam).gyerekekString.Add(item.nev);
  130.                     }
  131.                 }
  132.             }
  133.         }
  134.  
  135.         static void Main(string[] args)
  136.         {
  137.             List<Csucs> lista = new List<Csucs>();
  138.             treeSetup(lista);
  139.  
  140.             kiirFullLista(lista);
  141.  
  142.             while (lista.Count() != 1)
  143.             {
  144.                 int elem=0;
  145.                 foreach (var item in lista)
  146.                 {
  147.                     if (item.letezik == 1)
  148.                         elem++;
  149.                 }
  150.                 if (elem == 1) break;
  151.  
  152.                 csucsGyerekeiTorlese(lista);
  153.                 kiirFullLista(lista);
  154.             }
  155.  
  156.             Console.ReadKey();
  157.         }
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement