ezabillentyuzetegyszar

This commit is contained in:
Lendaia Mirai
2025-11-06 01:33:59 +01:00
parent 34f4a2eab3
commit 0484b1fd83
3 changed files with 308 additions and 174 deletions

89
ALGA/Class1.cs Normal file
View File

@@ -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<int> lista = new List<int>(); // 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
}
}
}
}

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@@ -59,13 +60,13 @@ namespace OE.ALGA.Optimalizalas
{ {
int m; int m;
Func<int, T> generator; Func<int, T> generator;
Func<T, int> josag; Func<T, double> josag;
int lepesszam; int lepesszam;
public int Lepesszam public int LepesSzam
{ {
get { return lepesszam; } get { return lepesszam; }
} }
public NyersEro(int m, Func<int, T> generator, Func<T, int> josag) public NyersEro(int m, Func<int, T> generator, Func<T, double> josag)
{ {
this.m = m; this.m = m;
this.generator = generator; this.generator = generator;
@@ -73,26 +74,70 @@ namespace OE.ALGA.Optimalizalas
} }
public T OptimalisMegoldas() public T OptimalisMegoldas()
{ {
T[] megoldasok = new T[m]; T legjobb = generator(0);
for (int i = 0; i < m; i++) for (int i = 0; i < m; i++)
{ {
megoldasok[i] = generator(i); T tmp = generator(i);
} if (josag(tmp) > josag(legjobb))
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])
{ {
maxindex = i; legjobb = tmp;
} }
lepesszam++;
} }
return megoldasok[maxindex]; return legjobb;
} }
} }
public class NyersEroHatizsakPakolas 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<bool[]> nyersero = new NyersEro<bool[]>(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());
}
}
} }

View File

@@ -1,162 +1,162 @@
//using NUnit.Framework; // using NUnit.Framework;
//using System; // using System;
//using OE.ALGA.Optimalizalas; // using OE.ALGA.Optimalizalas;
//namespace OE.ALGA.Tesztek.Optimalizalas // namespace OE.ALGA.Tesztek.Optimalizalas
//{ // {
// [TestFixture(Category = "Optimalizalas", TestName = "07 - Hátiszák Tesztek")] // [TestFixture(Category = "Optimalizalas", TestName = "07 - Hátiszák Tesztek")]
// public class HatizsakTesztek // public class HatizsakTesztek
// { // {
// [TestCase] // [TestCase]
// public void UresTeszt() // public void UresTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(0, 0, [], []); // HatizsakProblema problema = new HatizsakProblema(0, 0, [], []);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0));
// Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0));
// Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0));
// }); // });
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0));
// Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(0));
// Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(0));
// }); // });
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True); // Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True);
// Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.True); // Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.True);
// Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True); // Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True);
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void SulyTeszt() // public void SulyTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszSuly(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0));
// Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(10)); // Assert.That(problema.OsszSuly(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(10));
// Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(2)); // Assert.That(problema.OsszSuly(PakolasTesztEsetek.feligPakolas), Is.EqualTo(2));
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void JosagTeszt() // public void JosagTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0)); // Assert.That(problema.OsszErtek(PakolasTesztEsetek.uresPakolas), Is.EqualTo(0));
// Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(29)); // Assert.That(problema.OsszErtek(PakolasTesztEsetek.teljesPakolas), Is.EqualTo(29));
// Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(11)); // Assert.That(problema.OsszErtek(PakolasTesztEsetek.feligPakolas), Is.EqualTo(11));
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void ErvenyesTeszt() // public void ErvenyesTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True); // Assert.That(problema.Ervenyes(PakolasTesztEsetek.uresPakolas), Is.True);
// Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.False); // Assert.That(problema.Ervenyes(PakolasTesztEsetek.teljesPakolas), Is.False);
// Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True); // Assert.That(problema.Ervenyes(PakolasTesztEsetek.feligPakolas), Is.True);
// }); // });
// } // }
// } // }
// [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Tesztek")] // [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Tesztek")]
// public class NyersEroTesztek // public class NyersEroTesztek
// { // {
// [TestCase] // [TestCase]
// public void UresTeszt() // public void UresTeszt()
// { // {
// int[] A = { 4, 6, 7, 4, 2, 1 }; // int[] A = { 4, 6, 7, 4, 2, 1 };
// NyersEro<int> opt = new NyersEro<int>( // NyersEro<int> opt = new NyersEro<int>(
// 0, // 0,
// x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; }, // x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; },
// x => { Guardian.Recursion.CheckStackTrace(); return x; }); // x => { Guardian.Recursion.CheckStackTrace(); return x; });
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(4)); // Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(4));
// Assert.That(opt.LepesSzam, Is.EqualTo(0)); // Assert.That(opt.LepesSzam, Is.EqualTo(0));
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void TombLegnagyobbEleme() // public void TombLegnagyobbEleme()
// { // {
// int[] A = { 4, 6, 7, 4, 2, 1 }; // int[] A = { 4, 6, 7, 4, 2, 1 };
// NyersEro<int> opt = new NyersEro<int>( // NyersEro<int> opt = new NyersEro<int>(
// A.Length, // A.Length,
// x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; }, // x => { Guardian.Recursion.CheckStackTrace(); return A[x - 1]; },
// x => { Guardian.Recursion.CheckStackTrace(); return x; }); // x => { Guardian.Recursion.CheckStackTrace(); return x; });
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(7)); // Assert.That(opt.OptimalisMegoldas(), Is.EqualTo(7));
// Assert.That(opt.LepesSzam, Is.EqualTo(5)); // Assert.That(opt.LepesSzam, Is.EqualTo(5));
// }); // });
// } // }
// } // }
// [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Hátizsák Pakolás Tesztek")] // [TestFixture(Category = "Optimalizalas", TestName = "07 - Nyers Ero Hátizsák Pakolás Tesztek")]
// public class NyersEroHatizsakPakolasTesztek // public class NyersEroHatizsakPakolasTesztek
// { // {
// [TestCase] // [TestCase]
// public void UresTeszt() // public void UresTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(0, 0, [], []); // HatizsakProblema problema = new HatizsakProblema(0, 0, [], []);
// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); // NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(opt.OptimalisErtek(), Is.EqualTo(0)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(0));
// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(Array.Empty<bool>())); // Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(Array.Empty<bool>()));
// Assert.That(opt.LepesSzam, Is.EqualTo(0)); // Assert.That(opt.LepesSzam, Is.EqualTo(0));
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void JegyzetbenLevoPeldaErtekTeszt() // public void JegyzetbenLevoPeldaErtekTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); // NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek));
// Assert.That(opt.LepesSzam, Is.EqualTo(63)); // Assert.That(opt.LepesSzam, Is.EqualTo(63));
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void JegyzetbenLevoPeldaMegoldasTeszt() // public void JegyzetbenLevoPeldaMegoldasTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); // NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas)); // Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas));
// Assert.That(opt.LepesSzam, Is.EqualTo(63)); // Assert.That(opt.LepesSzam, Is.EqualTo(63));
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void NagyPeldaMegoldasErtekTeszt() // public void NagyPeldaMegoldasErtekTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); // NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek));
// Assert.That(opt.LepesSzam, Is.EqualTo(131071)); // Assert.That(opt.LepesSzam, Is.EqualTo(131071));
// }); // });
// } // }
// [TestCase] // [TestCase]
// public void NagyPeldaMegoldasTeszt() // public void NagyPeldaMegoldasTeszt()
// { // {
// HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
// NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema); // NyersEroHatizsakPakolas opt = new NyersEroHatizsakPakolas(problema);
// Assert.Multiple(() => // Assert.Multiple(() =>
// { // {
// Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.nagy_optimalis_pakolas)); // Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.nagy_optimalis_pakolas));
// Assert.That(opt.LepesSzam, Is.EqualTo(131071)); // Assert.That(opt.LepesSzam, Is.EqualTo(131071));
// }); // });
// } // }
// } // }
//} // }