Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Quizz LINQ : La liste des nombres premiers en 3 clauses ?

Visual Studio 2008Si LINQ n'est plus ou moins qu'un sucre syntaxique (ça se traduit comme ça ?) par rapport à ce que l'on peut déjà faire avec .NET 2.0, il permet néanmoins de réduire le code, souvent de quelques lignes, et parfois de façon assez impressionnante. Par contre la densité de réflexion par ligne de code augmente. Je suis donc ravi, puisque j'adore me creuser les méninges en écrivant (du code).

Aujourd'hui je vous propose de vous creuser les méninges, et de tester vos connaissances en LINQ :

Qui est capable de m'écrire une requête qui renvoie une énumération des nombres premiers de 1 à n (n étant un integer), en 3 clauses (from incluse) ?

Réponse :

Miiitch a en effet la bonne réponse, en simplifiant un peu (et avec des couleurs), cela donne ça :

Func<int, IEnumerable<int>> nombresPremiers = max =>
    from i in Enumerable.Range(2, max - 2)
    where Enumerable.Range(2, i - 2).All(j => i % j != 0)
    select i;

Utilisable ensuite en écrivant par exemple :

IEnumerable<int> result = nombresPremiers(100);

Grâce à l'exécution différée, cette ligne ne fait (presque) rien, et le calcul est effectivement fait lors de l'énumération :

foreach (int i in result)
   
Console.WriteLine(i);

C'est une belle preuve de la puissance et de l'expressivité de LINQ.

Publié lundi 26 novembre 2007 17:38 par RaptorXP
Classé sous : , , , ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

# re: Quizz LINQ : La liste des nombres premiers en 3 clauses ?

          Func

<int,bool> IsDivisible = number =&gt; number &lt; 4? false :Enumerable.Range(2,number-3).Any(nb=&gt; (number %nb)==0);

           Func<int, IEnumerable<int="">&gt; PrimeList = maxVal =&gt; from intVal in Enumerable.Range(1, maxVal) where !IsDivisible(intVal) select intVal;

           var liste = PrimeList(100);

lundi 26 novembre 2007 20:31 by Miiitch

# re: Quizz LINQ : La liste des nombres premiers en 3 clauses ?

Linq est vraiment un ajout fantastique au langage.

Pour ceux qui ne savent pas encore très bien ce qu'est Linq et surtout comment situer les moultes "saveurs" de Linq (L/object, L/xml, L/sql, L/entities...) un article très complet est téléchargeable ici :

http://www.e-naxos.com/Blog/post.aspx?id=53903699-5ef1-458e-9ad4-112225f37c88

vendredi 14 décembre 2007 16:34 by Merlin
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01