Je résoudre ce problème de la rotation d'un tableau et obtenu algorithme et le code de travailFaire pivoter un tableau en utilisant la syntaxe LINQ
int[] Rotate(int[] ar,int k)
{
if (k <= 0 || k > ar.Length - 1)
return ar;
Reverse(ar, 0, k - 1);
Reverse(ar, k, ar.Length - 1);
Reverse(ar, 0, ar.Length - 1);
return ar;
}
void Reverse(int[] ar,int start, int end)
{
while (start < end)
{
int temp = ar[start];
ar[start] = ar[end];
ar[end] = temp;
start++;
end--;
}
}
Maintenant, je veux faire dans LINQ et moi avons le code ci-dessous, je pense que cela peut être fait beaucoup mieux.
int[] Rotate(int[] ar,int k)
{
if (k <= 0 || k > ar.Length - 1)
return ar;
int[] ar1=ar.Take(k-1).Reverse().ToArray();
int[] ar2=ar.Skip(k - 1).Take(ar.Length - k+1).Reverse().ToArray();
int[] ar3 = ar1.Concat(ar2).Reverse().ToArray();
return ar3;
}
Ceci est un algorithme bien connu de perles de programmation - http://books.google.com/books?id=kse_7qbWbjsC&lpg=PA14&ots=DfzTzQCSar&dq=rotate%20an%20array%20programming%20pearls&pg=PA14#v=onepage&q&f=false
Et en général comment développer mes compétences LINQ, si on me donne un problème de programmation, en ce moment je ne pense à des boucles ou foreach boucles, comment penser en termes d'opérateurs linq. Je lis C# 4.0 en bref, autre que de pratiquer des conseils?
Ceci est la syntaxe * de la méthode d'extension *. La syntaxe LINQ commence avec 'from ...'. –
Oui, mais en utilisant LINQ pour se référer à lambdas/Enumerable ... Je crains que le chat soit bien sorti du lot. :( –
@Marcelo Cantos, ce que vous appelez est appelé la * syntaxe de compréhension de la requête * Il n'y a pas de "syntaxe LINQ" –