Example #1
0
        public Regula Stworz_regule(int argument, string wartosc, string decyzja)
        {
            Regula r = new Regula();

            r.decyzja = decyzja;
            r.deskryptory.Add(argument, wartosc);
            return(r);
        }
Example #2
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            // Tablica z wczytanymi danymi dostępna poniżej
            // this.systemDecyzyjny;

            //
            // Przykład konwersji string to double
            string sLiczbaDouble  = "1.5";
            double dsLiczbaDouble = StringToDouble(sLiczbaDouble);

            // Przykład konwersji string to int
            string sLiczbaInt = "1";
            int    iLiczbaInt = StringToInt(sLiczbaInt);

            /****************** Miejsce na rozwiązanie *********************************/
            List <Regula> reguly = new List <Regula>();
            List <int>    maska1 = new List <int>();

            foreach (var m in maska(systemDecyzyjny))
            {
                maska1.Add(m);
            }
            //int tmp = 0;
            if (maska1.Count() != 0)
            {
                for (int rzad = 1; rzad < systemDecyzyjny[0].Length - 1; rzad++)
                {
                    int tmp = 0;
                    int t   = 0;
                    foreach (var obiekt in systemDecyzyjny)
                    {
                        foreach (Combination combo in new Combination(systemDecyzyjny[0].Length - 1, rzad).GetRows())
                        {
                            Regula regula = new Regula(obiekt, combo.ToArray());
                            if (maska1.Contains(tmp))
                            {
                                if (regula.czyRegulaSprzeczna(systemDecyzyjny))
                                {
                                    reguly.Add(regula);
                                    regula.SupportReguly(systemDecyzyjny);
                                    maska1 = regula.generujPokjrycie(systemDecyzyjny, maska1);
                                    break;
                                }
                            }
                        }
                        tmp++;
                    }
                }
            }

            foreach (var reg in reguly)
            {
                wynik.Text += reg.ToString() + Environment.NewLine;
            }

            /****************** Koniec miejsca na rozwiązanie ********************************/
        }
Example #3
0
 public bool CzyRegulaNieSprzeczna(Regula r, string[][] obiekty)
 {
     foreach (var ob in obiekty)
     {
         if (r.CzyObiektSpelniaRegule(ob) && ob.Last() != r.decyzja)
         {
             return(false);
         }
     }
     return(true);
 }
Example #4
0
        //  public bool CzyRegulaZawieraReguleInnegoRzedu(List<Regula> lista, Regula r1)
        ///  {
        //      foreach (var desk in lista)
        //      {
        //           if (!r1.deskryptory.ContainsKey(desk.Key) || r1.deskryptory[desk.Key] != desk.Value)
        //               return false;
        //        }
        //        return true;
        //   }

        public static bool CzyRegulaZawieraReguleZListy(List <Regula> lista, Regula r)
        {
            for (int i = 0; i < lista.Count; i++)
            {
                if (!lista.Contains(r))
                {
                    return(false);
                }
            }
            return(true);
        }
Example #5
0
 public bool CzyRegulaZawieraInnaRegule(Regula r2)
 {
     foreach (var desk in r2.deskryptory)
     {
         if (!this.deskryptory.ContainsKey(desk.Key) || this.deskryptory[desk.Key] != desk.Value)
         {
             return(false);
         }
     }
     return(true);
 }
Example #6
0
        public Regula utwurzregule(string[] obiekt, int[] kombinacja)//odniesienie do klasy
        {
            Regula r = new Regula();

            r.decyzja = obiekt.Last();
            for (int i = 0; i < kombinacja.Length; i++)
            {
                int nrAtrybutu = kombinacja[i];
                r.deskryptory.Add(nrAtrybutu, obiekt[nrAtrybutu]);
            }
            return(r);
        }
        private void btnStart_Click(object sender, EventArgs e)
        {
            // Tablica z wczytanymi danymi dostępna poniżej
            // this.systemDecyzyjny;

            //
            // Przykład konwersji string to double
            string sLiczbaDouble  = "1.5";
            double dsLiczbaDouble = StringToDouble(sLiczbaDouble);

            // Przykład konwersji string to int
            string sLiczbaInt = "1";
            int    iLiczbaInt = StringToInt(sLiczbaInt);

            /****************** Miejsce na rozwiązanie *********************************/
            List <Regula> reguly = new List <Regula>();

            int[] kombinacja;

            for (int rzad = 1; rzad < systemDecyzyjny[0].Length - 1; rzad++)
            {
                int pom = 0;
                foreach (var macierz in macierzNieodruznialnosci(systemDecyzyjny))
                {
                    foreach (Combination combo in new Combination(systemDecyzyjny[0].Length - 1, rzad).GetRows())
                    {
                        kombinacja = combo.ToArray();
                        if (!czyKombinacjaWWierszu(macierz, kombinacja))
                        {
                            Regula regula = new Regula(obiekt(pom), kombinacja);


                            if (!regula.czyRegulaZawieraReguleZListy(reguly))
                            {
                                regula.SupportReguly(systemDecyzyjny);
                                reguly.Add(regula);
                            }
                        }
                    }
                    pom++;
                }
            }


            //wyswietl(reguly);
            foreach (var reg in reguly)
            {
                wynik.Text += reg.ToString();
            }

            /****************** Koniec miejsca na rozwiązanie ********************************/
        }
Example #8
0
        public List <int> KtoreObiektySpelniajaRegule(string[][] obiekty, Regula r)
        {
            var lista = new List <int>();
            int pom   = 0;

            foreach (var ob in obiekty)
            {
                pom++;
                if ((CzyObiektSpelniaRegule(ob) == true) && (ob.Last() == r.decyzja))
                {
                    lista.Add(pom);
                }
            }
            return(lista);
        }
Example #9
0
        public Form2(string[][] systemDecyzyjny)
        {
            InitializeComponent();

            var Lista = new List <Regula>();

            int[][][] macierz = Regula.MacierzNieodroznialnosci(systemDecyzyjny); //Tworze macierz nieordóżnialności
            for (int j = 1; j < systemDecyzyjny[0].Length - 1; j++)               //pętla po rzędach aka covering
            {
                for (int i = 0; i < macierz[0].Length; i++)                       //pętla po obiektach
                {
                    int[][]  wiersz = Regula.Fdwuwymiarowywiersz(macierz, i);     //wyciagamy wiersz i z macierzy nieodwracalnosci
                    string[] obiekt = Regula.Fwiersz(systemDecyzyjny, i);         //wyciagamy obiekt i
                    foreach (Combination combo in new Combination(obiekt.Length - 1, j).GetRows())
                    {
                        if ((Regula.CzyZawieraWWierszu(wiersz, combo.ToArray())) == (false))//sprawdzamy czy dana kombinacja zawiera sie w wierszu jezeli nie to
                        {
                            string[] wiersz_prawdziwy = Regula.Fwiersz(systemDecyzyjny, i);
                            Regula   r = new Regula(wiersz_prawdziwy, combo.ToArray()); //tworze regule

                            if (Lista.Count == 0)                                       //jezeli lista jest pusta to
                            {
                                r.support       = r.Fsupport(systemDecyzyjny);          //lcize support
                                rtbGlowne.Text += r.ToString() + Environment.NewLine;   //wypisuje
                                Lista.Add(r);                                           //dodaje regule do listy
                            }
                            else
                            {
                                int pomocnicza = 0;
                                foreach (var kvp in Lista)
                                {
                                    if (r.CzyRegulaZawieraInnaRegule(kvp) == false) //sprawdzam czy regula zaweira sie w liscie reguł (pomocnicza mówi mi czy reguła nie zawiera sie w kazdym elemencie listy czytaj wszystkei reguly)
                                    {
                                        pomocnicza++;                               //wiadomo bardzo wazna zmienna
                                    }
                                }
                                if (pomocnicza == Lista.Count)                            //jesli pomocnicza ma taka sama wartosc co wielkosc listy regul to oznacza ze moge użyć tej reguły
                                {
                                    r.support       = r.Fsupport(systemDecyzyjny);        //licze support
                                    rtbGlowne.Text += r.ToString() + Environment.NewLine; //wypisuje
                                    Lista.Add(r);                                         //dodaje do listy
                                }
                            }
                        }
                    }
                }
            }
        }
Example #10
0
        public Form2(string[][] systemDecyzyjny)
        {
            InitializeComponent();
            Regula      r           = new Regula();
            Najczestszy n           = new Najczestszy();
            var         Lista_Regul = new List <Regula>();
            var         Lista_najczejsciej_wystepujacyh_argumentow = new List <Najczestszy>();
            var         Lista_unikalnych_decyzji    = new List <string>();
            var         Lista_obiektow_konceptu     = new List <int>();//jeden koncept(wszystko na jednym potem następne)
            var         Lista_obiektow_niepokrytych = new List <int>();
            var         Lista_obiektow_spelniajacych_regula_w_danej_chwili = new List <int>();

            Lista_unikalnych_decyzji = r.Flistakonceptow(systemDecyzyjny);                                                     //lista unikalnych konceptow
            for (int i = 0; i < Lista_unikalnych_decyzji.Count; i++)                                                           //ilosc unikalnych deczyjii
            {
                Lista_obiektow_konceptu = r.Fwyciagnij_numery_obiektow_konceptu(systemDecyzyjny, Lista_unikalnych_decyzji[i]); //mamy liste zawierajaca numery obiektow danego konceptu
poczatek:
                if (Lista_obiektow_konceptu.Count == 0)
                {
                    goto zmienkoncept;
                }
                for (int j = 0; j < Lista_obiektow_konceptu.Count; j++)//OBIEKTY
                {
                    string[] kolumna_konceptu = n.Kolumna_konceptu(systemDecyzyjny, Lista_obiektow_konceptu, j);
                    n = n.Futwurz_najczesciej_wystepujaca_wartos_w_danej_kolumnie(kolumna_konceptu, j);
                    Lista_najczejsciej_wystepujacyh_argumentow.Add(n);
                    //lista najczeszcziej wystepujacyhc argumentow i ich wartosci
                    //Lista unikalnych decyzjii
                    //Lista zawierajaca numery obiektow na ktore patrzymy
                }
                var Tab_Czestosc_Wartosc_NumerKol = new int[3];
                Tab_Czestosc_Wartosc_NumerKol = r.Max_Czestosc_Wartosc_NumerKol(Lista_najczejsciej_wystepujacyh_argumentow);//wiem ile wiem jakie i ktory argument
                r = r.stworzregule(Tab_Czestosc_Wartosc_NumerKol[2], Convert.ToString(Tab_Czestosc_Wartosc_NumerKol[1]), Lista_unikalnych_decyzji[i]);
                Lista_Regul.Add(r);
                // var Lista_Obiektow_spelniajacych_regule = new List<int>();
                Lista_obiektow_spelniajacych_regula_w_danej_chwili = r.KtoreObiektySpelniajaRegule(systemDecyzyjny, r);//tylko te z danego konceptu
                //goto Start;
                //for(int k=0;k<Lista_obiektow_spelniajacych_regula_w_danej_chwili.Count;k++)
Start:
                if (r.CzyRegulaNieSprzeczna(r, systemDecyzyjny) == true)
                {
                    Lista_Regul.Add(r);
                    for (int x = 0; x < Lista_obiektow_spelniajacych_regula_w_danej_chwili.Count; x++)
                    {
                        Lista_obiektow_konceptu.Remove(Lista_obiektow_spelniajacych_regula_w_danej_chwili[x]);
                    }
                    goto poczatek;
                }
                else
                {
                    Lista_najczejsciej_wystepujacyh_argumentow.Clear();//czyszczę listę przed zmiana konceptu
                    for (int j = 0; j < Lista_obiektow_spelniajacych_regula_w_danej_chwili.Count - 1; j++)
                    {
                        string[] kolumna_konceptu = n.Kolumna_konceptu(systemDecyzyjny, Lista_obiektow_spelniajacych_regula_w_danej_chwili, j);
                        n = n.Futwurz_najczesciej_wystepujaca_wartos_w_danej_kolumnie(kolumna_konceptu, j);
                        Lista_najczejsciej_wystepujacyh_argumentow.Add(n);
                    }
                    Tab_Czestosc_Wartosc_NumerKol = r.Max_Czestosc_Wartosc_NumerKol(Lista_najczejsciej_wystepujacyh_argumentow);//wiem ile wiem jakie i ktory argument
                    r.deskryptory.Add(Tab_Czestosc_Wartosc_NumerKol[2], Convert.ToString(Tab_Czestosc_Wartosc_NumerKol[1]));
                    // r = r.stworzregule(Tab_Czestosc_Wartosc_NumerKol[2], Convert.ToString(Tab_Czestosc_Wartosc_NumerKol[1]), Lista_unikalnych_decyzji[i]);
                    // var Lista_Obiektow_spelniajacych_regule = new List<int>();
                    Lista_obiektow_spelniajacych_regula_w_danej_chwili = r.KtoreObiektySpelniajaRegule(systemDecyzyjny, r);//tylko te z danego konceptu
                    goto Start;
                }
zmienkoncept:
                {
                    Lista_najczejsciej_wystepujacyh_argumentow.Clear();//czyszczę listę przed zmiana konceptu
                }
            }
        }
Example #11
0
        public Form2(string[][] System_decyzyjny)
        {
            InitializeComponent();
            Regula r = new Regula();
            Najczestszy_atrybut n = new Najczestszy_atrybut();
            var Lista_regul       = new List <Regula>();
            var Lista_atrybutow_z_wartoscia_i_czestoscia = new List <Najczestszy_atrybut>();
            var Lista_konceptow = new List <string>();
            var Lista_obiektow_danego_konceptu = new List <int>();//jeden koncept(wszystko na jednym potem następne)
            var Lista_obiektow_niepokrytych    = new List <int>();
            var Lista_obiektow_spelniajacych_regule_w_danej_chwili = new List <int>();
            var Lista_dostepnych_atrybutow = new List <int>();

            Lista_konceptow = r.F_lista_konceptow(System_decyzyjny);//lista unikalnych konceptow
            for (int i = 0; i < Lista_konceptow.Count; i++)
            {
                Lista_obiektow_danego_konceptu = r.F_wyciagnij_numery_obiektow_konceptu(System_decyzyjny, Lista_konceptow[i]);//mamy liste zawierajaca numery obiektow danego konceptu
                Lista_obiektow_niepokrytych    = Lista_obiektow_danego_konceptu;
poczatek2:
                Lista_dostepnych_atrybutow = n.F_dostepne_atrybuty(System_decyzyjny);
                if (Lista_obiektow_niepokrytych.Count == 0)
                {
                    goto zmienkoncept;
                }
                for (int j = 0; j < System_decyzyjny[0].Length - 1; j++)//po kolumnach
                {
                    string[] kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu = n.F_utworz_kolumne_konceptu_danego_argumentu(System_decyzyjny, Lista_obiektow_niepokrytych, Lista_dostepnych_atrybutow[j]);
                    n = n.F_utworz_najczesciej_wystepujaca_wartos_danego_atrybutu(kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu, Lista_dostepnych_atrybutow[j]);
                    Lista_atrybutow_z_wartoscia_i_czestoscia.Add(n);
                    //Lista zawierajaca atrybuty , ich wartość i czestosci maxymalne
                }
poczatek:
                var Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_ = new int[4];
                Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_     = r.F_max_czestosc_wartosc_numer_kolumny(Lista_atrybutow_z_wartoscia_i_czestoscia);                                                   //znajduje najczesciej wystepujacy elemnet i pobiera informacje ktory to atrybut , jego wartosc i czestosc
                if (r.deskryptory.Count == 0)                                                                                                                                                                                //jezeli nie istnieje zaden deskryptor to
                {
                    r = r.Stworz_regule(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[2], Convert.ToString(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[1]), Lista_konceptow[i]); //tworze regułe
                }
                else //jezeli istnieje deskryptor to
                {
                    r.deskryptory.Add(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[2], Convert.ToString(Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[1]));
                }

                if (r.F_czy_regula_nie_sprzeczna(System_decyzyjny))//sprawdzam czy regula nie sprzeczna
                {
                    Lista_obiektow_spelniajacych_regule_w_danej_chwili = r.F_ktore_obiekty_spelniaja_regule(System_decyzyjny);

                    for (int ii = 0; ii < Lista_obiektow_niepokrytych.Count; ii++)
                    {
                        if (Lista_obiektow_spelniajacych_regule_w_danej_chwili.Contains(Lista_obiektow_niepokrytych[ii])) //jezeli lista obiektow spelniajacyh regule nie zawiera obiektu który ma lista obiektow danego konceptu to
                        {
                            Lista_obiektow_niepokrytych.RemoveAt(ii);                                                     //dodajemy obiekt który nie spelnia reguly  do listy niepokrytych obiektow
                            // Lista_obiektow_danego_konceptu.Remove(Lista_obiektow_danego_konceptu[ii]);//usuwamy z lsity obiektow danego konceptu obiekt nie spełniajacy reguły
                        }
                    }
                    // for(int k=0;k<)
                    r.support = 0;
                    for (int x = 0; x < Lista_obiektow_spelniajacych_regule_w_danej_chwili.Count; x++)
                    {
                        r.support++;
                        Lista_obiektow_niepokrytych.Remove(Lista_obiektow_spelniajacych_regule_w_danej_chwili[x]);
                    }
                    Lista_regul.Add(r);
                    r = new Regula();
                    Lista_atrybutow_z_wartoscia_i_czestoscia = new List <Najczestszy_atrybut>();
                    //Lista_obiektow_danego_konceptu.Clear();
                    // r.deskryptory.Clear();
                    //Lista_obiektow_danego_konceptu = Lista_obiektow_niepokrytych;

                    goto poczatek2;
                }


                else
                {
                    //musimy usunac obiekt niespełniający regułe V
                    //takze usunienty obiekt dodac do listy obiektow niepokrytych  V
                    //wygenerowac nowa liste najczesciej_wystepujaca_wartos_danego_atrybutu ponieważ usuwamyz rozważan obiekt niespełniajacy regułe V
                    // usunac atrybut uzyty do deksryptora V
                    // Lista_obiektow_spelniajacych_regule_w_danej_chwili.Clear();
                    Lista_obiektow_spelniajacych_regule_w_danej_chwili = r.F_ktore_obiekty_spelniaja_regule(System_decyzyjny);

                    for (int jj = 0; jj < Lista_atrybutow_z_wartoscia_i_czestoscia.Count; jj++)
                    {
                        int nr_atrybutu        = Lista_atrybutow_z_wartoscia_i_czestoscia[jj].nr_atrybutu;
                        int poprrzedni_atrybut = Tablica_atrybut_1_wartosc_2_czestosc_3_numer_atrybutu_na_liscie_4_[2];
                        if (nr_atrybutu == poprrzedni_atrybut)
                        {
                            //Lista_dostepnych_atrybutow.Add(Lista_atrybutow_z_wartoscia_i_czestoscia[jj]);
                            Lista_dostepnych_atrybutow.RemoveAt(jj);
                            //Lista_atrybutow_z_wartoscia_i_czestoscia.RemoveAt(jj); //usuwa z listy argument nie spełniający reguły
                        }
                        //przekaz w arg
                    }
                    Lista_atrybutow_z_wartoscia_i_czestoscia.Clear();              //czyscze liste przed wygenerowanie nowej
                    for (int j = 0; j < Lista_dostepnych_atrybutow.Count - 1; j++) //petla po ilosci obiektow danego konceptu
                    {
                        string[] kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu = n.F_utworz_kolumne_konceptu_danego_argumentu(System_decyzyjny, Lista_obiektow_spelniajacych_regule_w_danej_chwili, Lista_dostepnych_atrybutow[j]);
                        n = n.F_utworz_najczesciej_wystepujaca_wartos_danego_atrybutu(kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu, Lista_dostepnych_atrybutow[j]);
                        Lista_atrybutow_z_wartoscia_i_czestoscia.Add(n);
                        //Lista zawierajaca atrybuty , ich wartość i czestosci maxymalne
                    }
                    if (Lista_dostepnych_atrybutow.Count == 1)
                    {
                        string[] kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu = n.F_utworz_kolumne_konceptu_danego_argumentu(System_decyzyjny, Lista_obiektow_spelniajacych_regule_w_danej_chwili, Lista_dostepnych_atrybutow[0]);
                        n = n.F_utworz_najczesciej_wystepujaca_wartos_danego_atrybutu(kolumna_danego_argumentu_zawierajaca_wartosci_obiektow_konceptu, Lista_dostepnych_atrybutow[0]);
                        Lista_atrybutow_z_wartoscia_i_czestoscia.Add(n);
                    }
                    goto poczatek;
                }
zmienkoncept:
                {
                    Lista_atrybutow_z_wartoscia_i_czestoscia.Clear();//czyszczę listę przed zmiana konceptu
                }
            }
            foreach (var kvp in Lista_regul)
            {
                rtbGlowne.Text += string.Format(kvp.ToString()) + Environment.NewLine;
            }
        }
        private void btnStart_Click(object sender, EventArgs e)
        {
            // Tablica z wczytanymi danymi dostępna poniżej
            // this.systemDecyzyjny;

            //
            // Przykład konwersji string to double
            string sLiczbaDouble  = "1.5";
            double dsLiczbaDouble = StringToDouble(sLiczbaDouble);

            // Przykład konwersji string to int
            string sLiczbaInt = "1";
            int    iLiczbaInt = StringToInt(sLiczbaInt);

            /****************** Miejsce na rozwiązanie *********************************/



            //string wynik = String.Join(",", koceptFinal(koncept(systemDecyzyjny, "1"), systemDecyzyjny));



            Deskryptor desk = new Deskryptor();
            Dictionary <string, int> slownik      = new Dictionary <string, int>();
            List <Regula>            reguly       = new List <Regula>();
            List <Deskryptor>        pDeskryptory = new List <Deskryptor>();

            string[][] test;
            foreach (var decyzje in fUnkialnosc(fKolumna(systemDecyzyjny, ostatni)))
            {
                List <int> maska1 = new List <int>();
                List <int> maska2 = new List <int>();
                foreach (var m in maska(konceptFinall(decyzje)))
                {
                    maska1.Add(m);
                }

                string[][] tb;
                do
                {
                    pDeskryptory.Clear();
                    if (maska1.Count() != konceptFinall(decyzje).Count())
                    {
                        tb   = konceptBezPok(konceptFinall(decyzje), maska1);
                        desk = fMaxCalosc(konceptBezPok(konceptFinall(decyzje), maska1), pDeskryptory);
                    }
                    else
                    {
                        desk = fMaxCalosc(konceptFinall(decyzje), pDeskryptory);
                    }
                    Regula r = new Regula(decyzje, desk);


                    do
                    {
                        if (!r.czyRegulaSprzeczna(systemDecyzyjny))
                        {
                            pDeskryptory.Add(desk);
                            desk = fMaxCalosc(konceptPoPokryciu(konceptFinall(decyzje), maska2), pDeskryptory);
                            r    = dodajDeskryptor(r, desk);
                            maska2.Clear();
                            foreach (var m in maska(konceptFinall(decyzje)))
                            {
                                maska2.Add(m);
                            }
                            maska2 = r.generujPokjrycie(konceptFinall(decyzje), maska2);
                            if (r.czyRegulaSprzeczna(systemDecyzyjny))
                            {
                                r.SupportReguly(systemDecyzyjny);
                                reguly.Add(r);
                                maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1);
                            }
                        }
                        else
                        {
                            r.SupportReguly(systemDecyzyjny);
                            reguly.Add(r);
                            maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1);
                        }
                    } while (!r.czyRegulaSprzeczna(systemDecyzyjny));
                } while (maska1.Count() != 0);
            }
            foreach (var reg in reguly)
            {
                wynik.Text += reg.ToString();
            }

            /****************** Koniec miejsca na rozwiązanie ********************************/
        }
 public Regula dodajDeskryptor(Regula regula, Deskryptor desk)
 {
     regula.deskryptor.Add(desk);
     return(regula);
 }