Partage

[Exercices] Venez vous entraîner !

Ce mois: Parseur de fonctions mathématiques

21 décembre 2008 à 18:16:12

Citation : Nanoc

C'est ce que j'avais pensé faire au début. Cela avait été refusé. Et le forum a aussi l'avantage d'être plus visible.



Ah oui, ça me revient ! Je ne me souvenais même plus avoir participé aux bêta-tests des tutos-exercices que tu avais organisé fin 2007 !! :p
Effectivement ça avait été refusé.. Peut-être que la politique a changé depuis et que devant le travail accompli, les validateurs changeraient d'avis.
Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
24 décembre 2008 à 17:30:35

Exercices supplémentaires



Nom : Project Euler
Sujet : Algorithmes, grands nombres, mathématiques, ...


Un des domaines où l'informatique joue un grand rôle est le monde scientifique. De nombreux scientifiques utilisent la puissance de calcul des ordinateurs pour résoudre des équations ou pour faire des simulations dans le cadre de leurs recherches.
Utiliser son ordinateur comme une calculatrice est donc très courant. Cependnant, malgrè la vitesse de calcul des ordinateurs, il faut commencer par réfléchir avant de le lancer dans des calculs qui dureraient des centaines d'années.
C'est un domaine qui m'intéresse beaucoup et j'ai trouvé quelque chose pour vous faire découvrir cet univers.

Le site http://projecteuler.net/ propose toute une série d'exercices demandant souvent des connaissances mathématiques simples pour comprendre la donnée mais qui demandent souvent quelques temps de réflexion avant d'arriver à une solution efficace.

Le site propose plus de 200 problèmes. Si l'on s'inscrit (ce que je vous encourage à faire) on peut soumettre sa réponse (en général un nombre) et ainsi vérifier que l'on a bien résolu l'énigme mathématique. On peut ensuite accéder au forum traitant du problème et comparer sa solution avec d'autres utilisateurs (et d'autres langages).

Une règle important est que votre programme doit trouver la solution en moins d'une minute.

Les exercices (et le reste) sont en anglais mais si vous tombez sur un problème que vous ne comprennez pas, vennez poser la question sur ce forum (créez un nouveau thread). De même si vous restez coincé sur un problème.

Je vous souhaite bien du plaisir et un joyeux noël.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
Anonyme
25 décembre 2008 à 1:33:37

ça parait intéressant, merci!

Bonnes fêtes à tous.
25 décembre 2008 à 16:27:30

Effectivement ça parait intéressant ! Dés que j'ai un peu plus de temps devant moi je passerai à l'attaque !!

Joyeux noël ! :)
Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
26 décembre 2008 à 20:31:55

Merci Nanoc pour ce super site !!
Ayant terminé le premier problème avec brio ^^, je me suis mis au problème 2. Voici l'énoncé :

Citation

Find the sum of all the even-valued terms in the sequence which do not exceed four million.


Je ne comprends pas "even-valued terms", qui semble être indispensable pour le résoudre.
Merci d'avance.
26 décembre 2008 à 20:41:40

even-valued term = nombre pair
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
Anonyme
26 décembre 2008 à 22:35:19

Citation : Nanoc

even-valued term = nombre pair

:o
C'était pour ça que ça marchait pas :-°.
26 décembre 2008 à 23:23:45

houlà fallais le voir

j'ai completement zappé la notion de nombre pair, c'est donc pour ça que j'y arrivais pas !
27 décembre 2008 à 2:15:53

Citation : Nanoc

even-valued term = nombre pair



Plus précisément dans le contexte de l'exercice, c'est un peu ambigu de dire juste nombre pair. Ainsi, on demande de trouver une certaine propriété concernant des termes de valeur paire de la suite de Fibonacci et non des termes d'indice pair.

27 décembre 2008 à 13:10:27

Citation : Oubli4

Merci Nanoc pour ce super site !!
Ayant terminé le premier problème avec brio ^^, je me suis mis au problème 2. Voici l'énoncé :

Citation

Find the sum of all the even-valued terms in the sequence which do not exceed four million.


Je ne comprends pas "even-valued terms", qui semble être indispensable pour le résoudre.
Merci d'avance.


Google -> dico francais anglais...
29 décembre 2008 à 21:27:55

Citation : NLS le pingouin

Citation : Oubli4

Merci Nanoc pour ce super site !!
Ayant terminé le premier problème avec brio ^^, je me suis mis au problème 2. Voici l'énoncé :

Citation

Find the sum of all the even-valued terms in the sequence which do not exceed four million.


Je ne comprends pas "even-valued terms", qui semble être indispensable pour le résoudre.
Merci d'avance.


Google -> dico francais anglais...

http://www.google.com/dictionary?aq=f&langpair=fr|en&q=even-valued&hl=fr => "Le dictionnaire ne contient aucune traduction de : even-valued en Français"
30 décembre 2008 à 11:16:19

An even number is an integer that is "evenly divisible" by 2, i.e., divisible by 2 without remainder; an odd number is an integer that is not evenly divisible by 2.
Source: Wikipedia anglais

Donc: even = pair, odd=impair,
even-valued signifie juste "dont la valeur est paire", ce qui équivaut au même.
30 décembre 2008 à 14:35:56

Citation : NLS le pingouin

http://www.google.com/dictionary?aq=f&langpair=fr|en&q=even-valued&hl=fr => "Le dictionnaire ne contient aucune traduction de : even-valued en Français"


google -> dico francais anglais -> premier lien

even -> (number: divisible by two) pair adj
valued -> plusieurs définitions. Dur de faire le tri.

Citation : dico

many-valued adj plurivalente
much-valued adj très estimé
much-valued adj très valorisé
multiple-valued adj à valeurs multiples
valued at évalué à


Alors, on tente :
value -> noun valeur

On peut ne pas connaitre bien l'anglais et son système de participes passés. Dans ce cas, on remarque que le mot valeur apparait souvent.
dico francais anglais
valeur -> nom value

mh... Pas si compliqué, non?

even-valued : on en déduit un mélange du mot "valeur" et du mot "pair".

Vala! Je te dis pas tout ça pour être désagréable, mais ça pourra peut-être te permettre de gagner du temps quand tu bloques sur un texte en anglais (par exemple les docs de différentes bibliothèque). Faut pas oublier qu'internet est un moyen de communication universel, et que par conséquent beaucoup d'infos à ne pas négliger sont en anglais.

Salutations.
30 décembre 2008 à 19:21:58

Ok, vous savez tous utiliser google et trouver les traductions dont vous avez besoin. Ça fait 4 jours que Oubli4 a eu sa réponse, on peut arrêter le hors-sujet ? ;)
Je dis pas ça pour être désagréable, mais il faut bien que ça s'arrête ! ^^
Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.
1 janvier 2009 à 22:29:28

Ça y est !! J'ai enfin réussi les cryptages de césar puis Vigenère au niveau 1 !! Il ne me manquait qu'une addition ^^ par contre il y a juste une contrainte (mais nécessaire je croit) c'est que le texte (et la clé) doivent être en majuscule.
Je m'attaque maintenant au niveau 2 !!
1 janvier 2009 à 22:50:25

Citation : M41d3n-dc

il y a juste une contrainte (mais nécessaire je croit) c'est que le texte (et la clé) doivent être en majuscule.



Regarde la correction du chiffre de César pour voir comment gérer les minuscules simplement.
1 janvier 2009 à 22:55:29

c'est de passer les minuscules en majuscules ? Et juste pour savoir pourquoi as tu fais ton programme avec des classes, parce que moi il m'a donné un peu mal à la tête ^^ tu es programmeur ?
merci pour le conseil.
1 janvier 2009 à 23:28:30

Citation : M41d3n-dc

c'est de passer les minuscules en majuscules ?


En gros (avec C une lettre):
- Tu sauvergarde si C est une minuscule ou une majuscule (bool IsLower = std::islower(C))
- Tu passe C en majuscule (C = std::toupper(C))
- Tu fais ton traitement
- Et à la fin tu repasses C en minuscule si IsLower est égal à true (if(IsLower) C = std::tolower(C))
Je sais pas si c'est la meilleure méthode, mais elle est simple et rapide.

Citation : M41d3n-dc

Et juste pour savoir pourquoi as tu fais ton programme avec des classes ?


Que tu aies utilisé des classes ou des fonctions pour un programme comme celui-ci, ça revient un peu au même.

Citation : M41d3n-dc

tu es programmeur ?


Non.
1 janvier 2009 à 23:56:04

ok merci, et je me disais bien que la fct toupper() allais servir ;)
merci bien.
10 janvier 2009 à 22:38:06

J'ai un souci avec le deuxième exercice du projet euler: je ne comprend pas très bien se qu'il faut trouver.
Anonyme
10 janvier 2009 à 22:54:28

Citation : corel

J'ai un souci avec le deuxième exercice du projet euler: je ne comprend pas très bien se qu'il faut trouver.

La somme de tous les nombres de la suite de Fibonacci (cf wikipédia) pairs en dessous de 4 millions.
<edit>Mais ce n'est pas vraiment le topic pour en parler</edit>
11 janvier 2009 à 12:40:57

Ok, merci. Je l'ai mis ici car, comme c'est juste une questions réponse rapide, ça prend pas trop de place. (et puis, y'a déjà eu pire sur ce sujet: cf plus haut).
11 janvier 2009 à 17:04:48

Bonjour..Quélé le programme qui demande à l'utilisateur de taper un entier N<=20 et qui affiche tou le triangle de pascal juska la ligne N
par exemple si on tape 4 il va s'afficher le triangle suivant:

ligne 1: 1 1
ligne 2: 1 2 1
ligne 3: 1 3 3 1
ligne 4: 1 4 6 4 1
11 janvier 2009 à 17:26:01

Citation : Biidra

Bonjour..Quélé le programme qui demande à l'utilisateur de taper un entier N<=20 et qui affiche tou le triangle de pascal juska la ligne N
par exemple si on tape 4 il va s'afficher le triangle suivant:

ligne 1: 1 1
ligne 2: 1 2 1
ligne 3: 1 3 3 1
ligne 4: 1 4 6 4 1


Ne serais-tu pas en train de squatter ce topic, juste par hasard ?
12 janvier 2009 à 9:02:55

Bonne initiative Nanoc,

je suis en train de suivre les cours C++ de M@teo et justement a la fin de chaque chapitre je reste un peu sur ma faim car un petit QCM ce n'est pas suffisent !
Je regrette qu'il n'y ai pas un petit exercice de fin de chapitre pour la forme.

Merci !
15 janvier 2009 à 19:16:03

Exercice du mois de janvier 2009



Nom : CRYPTO 3: Cryptage XOR
Sujet : chaînes de caractères, algo


Continuons donc dans l'exploration de la cryptographie avec un système plus utilisable en informatique, le cryptage XOR.

Introduction de l'exercice du mois



Il serait intéressant d'avoir un moyen de crypter n'importe quel fichier et pas seulement les fichiers contenant du texte. Pour ce faire, on peut utiliser l'algorithme de chiffrement "XOR".

XOR est une opération que l'on retrouve en logique et qui suit les lois suivantes:

A XOR B = Resultat

A B Resultat
vrai vrai faux
vrai faux vrai
faux vrai vrai
faux faux faux


On peut dire le resultat est "VRAI" si A est "VRAI" ou B est "VRAI" mais pas les deux en même temps.

Pour crypter un message, on choisit une chaine de bits par exemple "11110000" qui servira de clé. On recopie ensuite la clé sous le "message" autant de fois que nécessaire.

Message: 010101010101
Clé_____: 111100001111

Puis on applique l'opération "XOR" sur chaque ligne, ce qui donne:

Message: 010101010101
Clé_____: 111100001111
Code___: 101001011010

Pour décrypter, on utilise à nouveau le même procédé avec exactement la même clé.

Comme on s'attaque directement aux bits, on peut réelement crypter n'importe quoi. Sachez également que si la clé est exactement aussi longue que le message et qu'elle est générée aléatoirement, alors le message devient incassable.
C'est un système de ce type qui était utilisé entre la Maison Blanche et le Kremlin durant la guerre froide pour sécuriser leurs communications.

Votre programme



Vous devez créer un programme qui permet de crypter et décrypter n'importe quel fichier grâce à l'algorithme XOR. L'utilisateur devra fournir sa clé de cryptage sous forme d'un mot. Le mot sera ensuite convertit en une suite de bits qui servira pour l'algorithme donné ci-dessus.

Ne testez pas votre programme sur n'importe quel fichier tant que vous n'êtes pas sûr que ça va marcher. Sinon vous risquez de détruire irrémédiablement le fichier en question.


Vous avez jusqu'au 15 février pour soumettre vos réponses à Réponse_Exercices.

Bonne chance à tous !
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
15 janvier 2009 à 20:24:15

Ce qui m'amuse, c'est que j'ai déja fait un programme comme celui ci ^^ .
Mais comme je l'ai perdu et que de toute façon, il était ilisible, bah, je vais le recoder :p .
15 janvier 2009 à 20:39:53

C'est bien le sujet de la cryptographie, mais là ça se simplifie je trouve par rapport à Vigenère. Mais bon j'imagine qu'il ne faut pas monter trop haut non plus.
15 janvier 2009 à 21:39:14

Citation : Chlab_lak

C'est bien le sujet de la cryptographie, mais là ça se simplifie je trouve par rapport à Vigenère. Mais bon j'imagine qu'il ne faut pas monter trop haut non plus.



Oui. Mais il faut bien un truc plus simple de temps en temps. Et celui là permet de jouer avec les bits ( :-° ).

Comme je prévis RSA dans la suite, il vaut mieux aussi avoir quelque chose de tranquille avant.
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
16 janvier 2009 à 5:19:11

J'aime bien la cryptologie, c'est un bon sujet ;)

J'ai déjà le code de fait, je l'adapte pour les paramètres du main, et je l'envoie ! :D