diff --git a/ALGA/Class1.cs b/ALGA/Class1.cs new file mode 100644 index 0000000..8335125 --- /dev/null +++ b/ALGA/Class1.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; + +namespace OE.ALGA; + +public static class Class1 +{ + public static void Cheatsheet() + { + //deklaráció + int asd; + //értékadás + asd = 2; + //egyben + int lol = 2; + //adat típusok + int egesz = 1; + double tort = 2.2; + string szoveg = "gooning"; + bool eldontendo = true; + int[] tomb; //ez egy int típusú tömb de lehet bármi + tomb = [1, 2, 3]; + List lista = new List(); // ez egy int típusú lista de lehet bármi + lista.Add(1); // listához így tudsz új elemet adni + // side note, a lista egy dinamikus tömbb, érettségin azt használd + + //kapuk + if (eldontendo) + { + //ha az állítás igaz ez történik.. pl + egesz++; + } + else if (egesz == 1) + { + //ha az előző nem teljesül megnézzük ezt. Ha ez teljesül akkor pl + lista.Add(5); + } + else + { + //bármilyen más esetben ez teljesül pl + Console.WriteLine("Send nudes"); //képernyőre kiírás + string user = Console.ReadLine(); // képernyőről beolvasás. Ez mindog string lesz szóval sztringbe tudod elmenteni + } + + switch (lol) // a megadott változót vizsgáljuk + { + case (2): //ha ez az érték kettő akkor pl + int elem = tomb[1]; // a tömb második elemét kimentjük egy azonos típusú változóba + break; + case (3): + Random rnd = new Random(); // random szám generátor létrehozása + int randomnumber = rnd.Next(10); //új random szám generálása az end generátoron keresztül + break; + + } + + //loopok + + for (int i = 0; i < 3; i++) //az i létrehozott intet egyesével növeljük amíg el nem éri a hármat + { + Console.WriteLine(tomb[i]); + // ez azt jelenti hogy az i először nulla lesz, ez kissebb mint három így belép a kódblokkba és végrehajtja azt. tehát kiírja a tömb i-edik azaz először + //nulladik elemét. Majd hozzáad az ihez egyet. Így az i = 1. Még ez is kissebb mint 3 ezért ismét belép. És így tovább. + } + + foreach (int i in lista) // ezt csak tömbök vagy listák bejárására használjuk + { + //fontos hogy a meghatározott elem típúsa azonos egyen a lista vagy tömb típúsával. A foreach egyesével minden elemmet egyenlővé tesz az i vel + // és be fog lépni a kódblokkba + if (i == 2) //tehát itt az i először egyenlő a listánk első elemével. + { + eldontendo = false; + } + } + + while (eldontendo) //ez azt jelenti hogy amíg a zárójelben lévő kijelentés teljesül + { + //addig belép az alábbi kódblokkba + // figyelj hogy csak olyan dolgot írj a zárójelbe ami változik mert különben örökké a ciklusba maradunk muhaha + int[] xd = new int[5]; //létrehozunk egy 5 elem hosszú tömböt + int hovarakjuk = Convert.ToInt16(Console.ReadLine()); //a Convert beépített metódust tudod használni a típúsok megváltoztatására + // a zárójelben lévő elemet itt inté alakítjuk. De ez lehet .ToString vagy ToBool vagy bármi egyéb logikus lépés + if (hovarakjuk < xd.Length) // a .Lenghtet tömbök hosszának meghatározására tudod használni + { + xd[hovarakjuk] = 1; // itt az xd tömbünk "hovarakjuk"adik elemét egyenlővé tesszük 1el + } + } + } +} diff --git a/ALGA/Optimalizalas/07_NyersEro.cs b/ALGA/Optimalizalas/07_NyersEro.cs index fd8cc8e..d0858b5 100644 --- a/ALGA/Optimalizalas/07_NyersEro.cs +++ b/ALGA/Optimalizalas/07_NyersEro.cs @@ -1,4 +1,5 @@ using System; +using System.ComponentModel; using System.Linq; using System.Runtime.InteropServices; @@ -59,13 +60,13 @@ namespace OE.ALGA.Optimalizalas { int m; Func generator; - Func josag; + Func josag; int lepesszam; - public int Lepesszam + public int LepesSzam { get { return lepesszam; } } - public NyersEro(int m, Func generator, Func josag) + public NyersEro(int m, Func generator, Func josag) { this.m = m; this.generator = generator; @@ -73,26 +74,70 @@ namespace OE.ALGA.Optimalizalas } public T OptimalisMegoldas() { - T[] megoldasok = new T[m]; + T legjobb = generator(0); for (int i = 0; i < m; i++) { - megoldasok[i] = generator(i); - } - int[] ertekek = new int[m]; - int maxindex = 0; - for (int i = 0; i < m; i++) - { - ertekek[i] = josag(megoldasok[i]); - if (ertekek[maxindex] < ertekek[i]) + T tmp = generator(i); + if (josag(tmp) > josag(legjobb)) { - maxindex = i; + legjobb = tmp; } + lepesszam++; } - return megoldasok[maxindex]; + return legjobb; } } public class NyersEroHatizsakPakolas { - - } + int lepesszam; + public int LepesSzam + { + get { return lepesszam; } + } + HatizsakProblema problema; + public NyersEroHatizsakPakolas(HatizsakProblema problema) + { + this.problema = problema; + } + public bool[] Generator(int i) + { + int szam = i; + bool[] pakolas = new bool[problema.N]; + for (int j = problema.N; j >= 0; j--) + { + bool ertek = (szam % 2 != 0); + pakolas[i] = ertek; + if (ertek && szam > 0) + { + szam--; + } + szam = szam / 2; + } + return pakolas; + } + public double Josag(bool[] pakolas) + { + double ertek = 0; + if (problema.Ervenyes(pakolas)) + { + ertek = -1; + } + else + { + ertek = problema.OsszErtek(pakolas); + } + return ertek; + } + public bool[] OptimalisMegoldas() + { + NyersEro nyersero = new NyersEro(Convert.ToInt32(Math.Pow(2, Convert.ToDouble(problema.N))), Generator, Josag); + bool[] megoldas = nyersero.OptimalisMegoldas(); + lepesszam = nyersero.LepesSzam; + return megoldas; + } + public double OptimalisErtek() + { + return problema.OsszErtek(OptimalisMegoldas()); + } + } } diff --git a/Tesztek/07_NyersEroTesztek.cs b/Tesztek/07_NyersEroTesztek.cs index 6849779..ea44d1a 100644 --- a/Tesztek/07_NyersEroTesztek.cs +++ b/Tesztek/07_NyersEroTesztek.cs @@ -1,162 +1,162 @@ -//using NUnit.Framework; -//using System; -//using OE.ALGA.Optimalizalas; +// using NUnit.Framework; +// using System; +// using OE.ALGA.Optimalizalas; -//namespace OE.ALGA.Tesztek.Optimalizalas -//{ -// [TestFixture(Category = "Optimalizalas", TestName = "07 - Hátiszák Tesztek")] -// public class HatizsakTesztek -// { -// [TestCase] -// public void UresTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(0, 0, [], []); -// Assert.Multiple(() => -// { -// Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); -// Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0)); -// Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0)); -// }); -// Assert.Multiple(() => -// { -// Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); -// Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0)); -// Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0)); -// }); -// Assert.Multiple(() => -// { -// Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True); -// Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.True); -// Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True); -// }); -// } -// [TestCase] -// public void SulyTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); -// Assert.Multiple(() => -// { -// Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); -// Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(10)); -// Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(2)); -// }); -// } -// [TestCase] -// public void JosagTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); -// Assert.Multiple(() => -// { -// Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); -// Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(29)); -// Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(11)); -// }); -// } -// [TestCase] -// public void ErvenyesTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); -// Assert.Multiple(() => -// { -// Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True); -// Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.False); -// Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True); -// }); -// } -// } +// namespace OE.ALGA.Tesztek.Optimalizalas +// { +// [TestFixture(Category = "Optimalizalas", TestName = "07 - Hátiszák Tesztek")] +// public class HatizsakTesztek +// { +// [TestCase] +// public void UresTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(0, 0, [], []); +// Assert.Multiple(() => +// { +// Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); +// Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0)); +// Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0)); +// }); +// Assert.Multiple(() => +// { +// Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); +// Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0)); +// Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0)); +// }); +// Assert.Multiple(() => +// { +// Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True); +// Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.True); +// Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True); +// }); +// } +// [TestCase] +// public void SulyTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); +// Assert.Multiple(() => +// { +// Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); +// Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(10)); +// Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(2)); +// }); +// } +// [TestCase] +// public void JosagTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); +// Assert.Multiple(() => +// { +// Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); +// Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(29)); +// Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(11)); +// }); +// } +// [TestCase] +// public void ErvenyesTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); +// Assert.Multiple(() => +// { +// Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True); +// Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.False); +// Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True); +// }); +// } +// } -// [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Tesztek")] -// public class NyersEroTesztek -// { -// [TestCase] -// public void UresTeszt() -// { -// int[] A = { 4, 6, 7, 4, 2, 1 }; -// NyersEro opt = new NyersEro( -// 0, -// x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; }, -// x => { Guardian.Recursion.CheckStackTrace(); return x; }); -// Assert.Multiple(() => -// { -// Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(4)); -// Assert.That(opt.LepesSzam, Is.EqualTo(0)); -// }); -// } -// [TestCase] -// public void TombLegnagyobbEleme() -// { -// int[] A = { 4, 6, 7, 4, 2, 1 }; -// NyersEro opt = new NyersEro( -// A.Length, -// x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; }, -// x => { Guardian.Recursion.CheckStackTrace(); return x; }); -// Assert.Multiple(() => -// { -// Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(7)); -// Assert.That(opt.LepesSzam, Is.EqualTo(5)); -// }); -// } +// [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Tesztek")] +// public class NyersEroTesztek +// { +// [TestCase] +// public void UresTeszt() +// { +// int[] A = { 4, 6, 7, 4, 2, 1 }; +// NyersEro opt = new NyersEro( +// 0, +// x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; }, +// x => { Guardian.Recursion.CheckStackTrace(); return x; }); +// Assert.Multiple(() => +// { +// Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(4)); +// Assert.That(opt.LepesSzam, Is.EqualTo(0)); +// }); +// } +// [TestCase] +// public void TombLegnagyobbEleme() +// { +// int[] A = { 4, 6, 7, 4, 2, 1 }; +// NyersEro opt = new NyersEro( +// A.Length, +// x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; }, +// x => { Guardian.Recursion.CheckStackTrace(); return x; }); +// Assert.Multiple(() => +// { +// Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(7)); +// Assert.That(opt.LepesSzam, Is.EqualTo(5)); +// }); +// } -// } +// } -// [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Hátizsák Pakolás Tesztek")] -// public class NyersEroHatizsakPakolasTesztek -// { -// [TestCase] -// public void UresTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(0, 0, [], []); -// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); -// Assert.Multiple(() => -// { -// Assert.That(opt.OptimalisErtek(), Is.EqualTo(0)); -// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(Array.Empty())); -// Assert.That(opt.LepesSzam, Is.EqualTo(0)); -// }); -// } -// [TestCase] -// public void JegyzetbenLevoPeldaErtekTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); -// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); -// Assert.Multiple(() => -// { -// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek)); -// Assert.That(opt.LepesSzam, Is.EqualTo(63)); -// }); -// } -// [TestCase] -// public void JegyzetbenLevoPeldaMegoldasTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); -// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); -// Assert.Multiple(() => -// { -// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas)); -// Assert.That(opt.LepesSzam, Is.EqualTo(63)); -// }); -// } -// [TestCase] -// public void NagyPeldaMegoldasErtekTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); -// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); -// Assert.Multiple(() => -// { -// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek)); -// Assert.That(opt.LepesSzam, Is.EqualTo(131071)); -// }); -// } -// [TestCase] -// public void NagyPeldaMegoldasTeszt() -// { -// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); -// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); -// Assert.Multiple(() => -// { -// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.nagy_optimalis_pakolas)); -// Assert.That(opt.LepesSzam, Is.EqualTo(131071)); -// }); -// } -// } -//} \ No newline at end of file +// [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Hátizsák Pakolás Tesztek")] +// public class NyersEroHatizsakPakolasTesztek +// { +// [TestCase] +// public void UresTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(0, 0, [], []); +// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); +// Assert.Multiple(() => +// { +// Assert.That(opt.OptimalisErtek(), Is.EqualTo(0)); +// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(Array.Empty())); +// Assert.That(opt.LepesSzam, Is.EqualTo(0)); +// }); +// } +// [TestCase] +// public void JegyzetbenLevoPeldaErtekTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); +// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); +// Assert.Multiple(() => +// { +// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek)); +// Assert.That(opt.LepesSzam, Is.EqualTo(63)); +// }); +// } +// [TestCase] +// public void JegyzetbenLevoPeldaMegoldasTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); +// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); +// Assert.Multiple(() => +// { +// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas)); +// Assert.That(opt.LepesSzam, Is.EqualTo(63)); +// }); +// } +// [TestCase] +// public void NagyPeldaMegoldasErtekTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); +// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); +// Assert.Multiple(() => +// { +// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek)); +// Assert.That(opt.LepesSzam, Is.EqualTo(131071)); +// }); +// } +// [TestCase] +// public void NagyPeldaMegoldasTeszt() +// { +// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); +// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); +// Assert.Multiple(() => +// { +// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.nagy_optimalis_pakolas)); +// Assert.That(opt.LepesSzam, Is.EqualTo(131071)); +// }); +// } +// } +// }