Project Euler
Par Reda BOUALLOU le lundi 2 juin 2008, 20:54 - Lien permanent
Project Euler (http://projecteuler.net) est un site proposant près de 200 challenges mathématiques à résoudre par des programmes informatiques.
Si les premiers problèmes sont triviaux, la difficulté augmente progressivement et les derniers n'ont été résolus que par une poignée de personne surmotivés. Avis aux amateurs : de nouveaux challenges sont ajoutés régulièrement et à l'instant même où j'écris ce billet le problème 196 vient d'apparaître.
Etant donné que résoudre ces problèmes est une bonne occasion pour tester un nouveau langage, j'ai voulu voir ce que pouvait donner le C# 3.0. Le résultat est plutôt impressionnant.
17 private static void Problem1()
18 {
19 // la somme des nombres inférieurs à 1000 qui sont multiples de 3 et de 5
20 int sum = Enumerable.Range(1, 999).Where(n => ((n % 3) == 0 || (n % 5) == 0)).Sum();
21 Console.WriteLine("Result => {0}", sum);
22 }
23 #endregion
24
25 #region Problem2
26 private static void Problem2()
27 {
28 // la somme des termes de la suite de Fibonacci qui sont inférieurs à 4 millions
29 int sum = Fibonacci().Where(n => ((n % 2) == 0)).TakeWhile(n => (n < 4000000)).Sum();
30 Console.WriteLine("Result => {0}", sum);
31 }
32
33 private static IEnumerable<int> Fibonacci()
34 {
35 int a = 1;
36 int b = 2;
37 while(true)
38 {
39 int tmp = a;
40 yield return tmp;
41 a = b;
42 b = tmp + b;
43 }
44 }
45 #endregion
46
47 #region Problem6
48 private static void Problem6()
49 {
50 // le carré de la somme moins la somme des carré... mais est-ce bien la peine de le commenter ^^
51 int difference =
52 Enumerable.Range(1, 100).Sum().Square() - Enumerable.Range(1, 100).Select(i => i.Square()).Sum();
53
54 Console.WriteLine(difference);
55 }
56
57 private static int Square(this int n)
58 {
59 return (int)Math.Pow(n, 2);
60 }
61 #endregion
62
63 #region Problem9
64 private static void Problem9()
65 {
66 // trouver le triplet pythagoricien pour lequel a + b + c = 1000
67 var triplet = (from i in Enumerable.Range(1, 999)
68 from j in Enumerable.Range(i + 1, 999 - i)
69 let k = 1000 - i - j
70 where i.Square() + j.Square() == k.Square()
71 select new { A = i, B = j, C = k }).First();
72
73 Console.WriteLine("a={0}, b={1}, c={2}", triplet.A, triplet.B, triplet.C);
74 }
75 #endregion
PS : si ça en intéresse certains, j'ai la solution des 10 premiers problèmes en C# 3.0.
Commentaires
Salut je trouve ton blog vraiment interessante. Je suis en train d'apprendre la méthode linq de c#.
Si tu aurais la gentillesse de m'envoyer les 10 premiers problémes en c#, je te serais vraiment reconnaissant.
Ton blog m'a bien aidé. Je suis aussi intéressé par les 10 premiers problèmes en C#. Si tu as le temps j'aimerais bien que tu me les envoie.
Merci d'avance.
Bonjour,
J'aimerai en savoir un peu plus.
Pouvez-vous me contacter par mail.
D'avance Merci
Eva ATLAN
Bonjour,
Notre cabinet de recrutement, RCBF Consulting est spécialisé depuis 1995 dans la recherche de hauts potentiels pour le secteur de la banque/finance.
Je vous sollicite aujourd’hui dans le cadre d’une mission que nous menons actuellement pour l’un nos clients EDITEUR des plus en pointe sur la planète Finance. De dimension internationale, il affiche un CA en croissance de 20 à 30 % par an sans discontinuité depuis plusieurs années. Son effectif est supérieur à 500 collaborateurs.
Pour accompagner sa croissance, nous recherchons plusieurs profils de formation Ingénieur.
Soit vous intégrez l'équipe R&D basée à Paris centre (quant, architecte applicatif, étude et développement, chef de projet) soit vous rejoignez les projets d'implémentation sur les sites de clients répartis dans toutes les grandes capitales en tant que Consultant technique ou Consultant fonctionnel.
La connaissance de la Finance n'est qu'un plus pour les postes techniques. La structure saura vous apporter cette compétence à grand renfort de formation à la fois sur leur large gamme de produit et sur la finance en général.
Un bon niveau d’anglais est demandé pour évoluer dans ce contexte international.
Postes à pourvoir dès maintenant.
Rémunération et perspectives de carrière motivantes
Si cette offre éveille votre intérêt ou si vous êtes en recherche d’autres opportunités, envoyez nous votre Cv actualisé.
N’hésitez pas à diffuser cette offre autour de vous.
Réponse et confidentialité assurées,
Si vous souhaitez recevoir d'autres offres ciblées, vous pouvez nous indiquer par retour de mail les types de postes qui vous intéressent.
Si vous possédez une autre adresse mail pour la réception de nos offres merci de nous la préciser.
Si vous ne voulez plus de proposition de la part de notre cabinet merci de répondre au présent mail en indiquant « Supprimer dans l'objet du mail ».
Dans l’attente de votre retour,
Mlle Gul OZTURK
Consultante en recrutement
01 43 12 54 14
gul@rcbf.fr
RCBF Consulting
3 rue du Faubourg St Honoré
75008 Paris