Diskuze: LINQ - Nalezení cesty
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
LINQ to Objects dělá všechny operace v čase O(n), což je stejné jako bys to projel ručně cyklem (on to samozřejmě i tak překládá, jinak to udělat nejde). Takže když ho použiješ rozumně, mělo by to být stejné.
Jj díky Ale nemůžu
přijít úplně jak na to
.
Šlo by to napsat na "jeden řádek" -> napíšu takový pseudo kod
path = Najdi kde HODNOTA POZICE je o 1 menší, pozice = nová pozice
Nevím, jestli je to pochopitelné, každopádně jsem na pozici (8,8) s hodnotou 7, hledám tedy pozici aktuální pozice -1, tedy bud 7,8;8,9;8,6,;8,7 -> poté vlastně hledám z té nové pozice a takhle až naleznu pozici Start -> mám cestu.
Jde to vůbec spojit přes několik dotazů v LINQ ? Nebo to je hloupost ?
Bez použití LINQ to mám takto. Metoda IsNearFinish() kontroluje jeslti už nejsem náhodou blízko hledané pozice - start,cíl, nepřítel,...
bool loop = true;
while (loop)
{
loop = false;
x = curr.X;
y = curr.Y;
for (int k = 0; k < vectors.Length; k++)
{
if (k < 2)
x += vectors[k];
else y += vectors[k];
if (x >= 0 && x < arr.GetLength(0) && y >= 0 && y < arr.GetLength(1) && arr[x, y] == id - 1 && !IsNearFinish(new Point(x,y),start))
{
path.Add(new Point(x, y));
curr = new Point(x, y);
id = arr[x, y];
loop = true;
}
}
}
Zobrazeno 4 zpráv z 4.