Zdravím,
už druhý den si lámu hlavu s tímto kodem, spíše s jeho zjednodušením, protože bych ho do budoucna chtěl rozšířit o další čísla, ale už takhle "jenom" při 3 číslech je to neskutečně zdlouhavý.
Zjednodušeně, jedná se o brutoforce attack s tím, že zkouší kombinace "pro tří číselný zámek" 0 0 0 -> 0 0 1 -> 0 0 2 -> ... 0 0 9 -> zvýší nadřezený (0 1 9) -> sníží podřízený postupně od 9 do 0 (0 1 0) a takhle jede dál... Jde o to, že bych to nechtěl vynulovat (proměnnou) na 0 a jet od znova ale ten postup na snížení se musí dodržet. Chtěl bych to udělat nějak elegantně, ale nedokážu si představit tohle psát třeba pro 20čísel.
Enum Send označuje že teprve tam se provede "ODESLANI" kodu (na server). Kód funguje přesně jak potřebuju a jak to má fugnovat (postup musí zustat), jen bych ho rád nějak zjednodušil a vůbec mě nenapadá jak.
Kod není úplně totožný s originálem (je to jen pro testování ve VS a bylo zkompilovatelný) proměnný
lFirstNum, lSecondNum, lThirdNumber tam ve skutečnosti nejsou je to demonstrace dat co přijdou ze serveru (ale to je asi irelevantní)
static void Main(string[] args)
{
Switch FHatratTruhlaSwitch = Switch.RaiseThird;
int lFirstNum = 0;
int lSecondNum = 0;
int lThirdNumber = 0;
while (true)
{
switch (FHatratTruhlaSwitch)
{
case Switch.RaiseThird:
if (lThirdNumber == 9)
FHatratTruhlaSwitch = Switch.RaiseSecond;
else
{
lThirdNumber += 1;
FHatratTruhlaSwitch = Switch.Send;
}
break;
case Switch.DownThird:
if (lThirdNumber != 0)
{
Console.WriteLine("Down " + lFirstNum.ToString() + "-" + lSecondNum.ToString() + "-" + lThirdNumber.ToString());
lThirdNumber -= 1;
FHatratTruhlaSwitch = Switch.DownThird;
}
else
FHatratTruhlaSwitch = Switch.Send;
break;
case Switch.RaiseSecond:
if (lSecondNum == 9)
FHatratTruhlaSwitch = Switch.RaiseFirst;
else
{
lSecondNum += 1;
FHatratTruhlaSwitch = Switch.DownThird;
}
break;
case Switch.DownSecond:
if (lSecondNum != 0)
{
Console.WriteLine("Down " + lFirstNum.ToString() + "-" + lSecondNum.ToString() + "-" + lThirdNumber.ToString());
lSecondNum -= 1;
FHatratTruhlaSwitch = Switch.DownSecond;
}
else
FHatratTruhlaSwitch = Switch.DownThird;
break;
case Switch.RaiseFirst:
if (lFirstNum == 9)
{
FHatratTruhlaSwitch = Switch.End;
}
else
FHatratTruhlaSwitch = Switch.DownSecond;
lFirstNum += 1;
break;
case Switch.Send:
Console.WriteLine(lFirstNum.ToString() + "-" + lSecondNum.ToString() + "-" + lThirdNumber.ToString());
Thread.Sleep(25);
FHatratTruhlaSwitch = Switch.RaiseThird;
break;
case Switch.End:
Console.WriteLine("Konec");
Console.ReadKey();
break;
}
}
}
enum Switch: byte
{
RaiseFirst,
RaiseSecond,
RaiseThird,
DownFirst,
DownSecond,
DownThird,
Send,
End
}
Díky