Les règles des Défis C & C++
Date de publication : 22 janvier 2009 , Date de mise à jour : 14 juin 2009
Par
ram-0000
1. Présentation
Les équipes C et C++ vous souhaitent la bienvenue sur la page des défis du Langage C et C++.
Les défis C & C++ sont des petits exercices à faire soi même ou en équipe sur un sujet précis, un peu comme lors des examens ou exercices de livres. Ces codes à écrire sont étudiés de sorte que les défis aient un côté algorithmique en plus de l'implémentation ce qui implique pour vous, une réflexion plus ou moins approfondie ainsi que l'écriture d'un algorithme textuel puis de l'implémenter et de le tester.
2. Règlement général
2.1. Les organisateurs et le jury
2.1.1. Les organisateurs
Le rôle des organisateurs est le suivant :
- Mettre en place les défis, le règlement, les pages du site.
- Animer les défis et veiller à leur bon déroulement.
- Répondre aux questions des participants.
- Participer au jury.
Vous pouvez les contacter par MP en cas de problèmes, litiges ou questions ainsi que pour des propositions de thèmes pour des défis futurs et également pour toutes propositions d'évolutions des défis en général!
2.1.2. Le jury
La composition du jury peut être différente pour chaque défi suivant les dispositions de chacun. Le jury peut être composé :
- du ou des organisateurs du défi
- de volontaires
- éventuellement le gagnant du défi précédent
Une nouvelle liste des membres du jury est établie pour chaque défi. La liste des membres du jury est fournie avec l'énoncé de chaque défi. Le rôle du jury est le suivant :
- Commenter les propositions des participants.
- Tester les codes sources et veiller à ce qu'ils répondent au sujet.
- Noter les codes sources selon la qualité du code, la robustesse, l'ingéniosité, etc.
- Critiquer les codes sources afin de pouvoir vous améliorer et prendre de bonnes habitudes.
Ni les membres du jury ni les organisateurs ne peuvent participer au défiet ce, à des fins d'équité.
2.2. Les participants
Aucune inscription aux défis n'est nécessaire mis à part bien sûr d'être enregistré comme membre des forums. La simple soumission du travail effectué est suffisante pour s'ajouter à la liste des participants.
Les participants peuvent, s'il le souhaite, se constituer en équipe pour un défi. Ils doivent alors nommer un responsable d'équipe. C'est cette personne et elle seule qui doit soumettre le résultat du travail de l'équipe. Une personne membre d'une équipe ne peut être membre d'une autre équipe ni participer à titre individuel au défi.
Les modérateurs, rédacteurs, administrateurs, responsables (enfin toute personnes ayant des plumes ou des étoiles quoi) peuvent aussi participer au défi de manière individuelle ou en équipes constituées avec un responsable identifié lors de la soumission. Leur travail sera alors classé dans la catégorie "Responsables DVP". Il suffit d'un seul modérateur, rédacteur, administrateur ou responsable dans l'équipe pour que toute l'équipe passe dans la catégorie "Responsables DVP".
|
Une seule soumission par participant ou par équipe est autorisée, celle-ci une fois faite ne peut plus être modifiée.
|
Tous les participants ont le droit de poser des questions sur l'énoncé du problème en cas de points obscurs ou mal compris. Ceci se fera sur le forum public des
Défis C sur un fil publique de discussion spécifique au défi en cours. Les réponses seront aussi portées de manière publique sur ce fil. Les organisateurs, les participants ayant moins de difficultés mais aussi les autres forumeurs peuvent également répondre sur ce fil.
|
Lors de l'analyse des soumissions, le jury donnant des critiques constructives à chaque soumission de code source dans le forum, les participants ont le droit, et cela est même recommandé, de participer aux discussions autour de leur travail.
|
Le gagnant d'un défi pourra s'il le souhaite, choisir le sujet du défi suivant. Dans cas, il devra obligatoirement fournir la solution la mieux adaptée au problème posé pour le défi. Il pourra aussi faire partie du jury.
2.3. Les défis
Les défis sont suffisamment courts pour que les travaux ne demandent pas plus de quelques jours de travail mais cela peut varier d'un défi à l'autre et surtout d'un participant à l'autre. Pour cette raison, aucun temps imparti ne sera défini à part date de fin du défi lui même qui sera donnée dans le message d'ouverture du défi.
La durée d'un défi sera environ d'un mois. Cette durée pourra être modifiée en fonction de certains impératifs ou de la complexité supposée du défi. Les organisateurs tenteront d'organiser un défi par mois.
Les défis proposés sont des travaux personnels ou en équipe. Il n'est donc pas autorisé de demander de l'aide au sein des forums. Nous ne pouvons pas toujours vérifier ce point mais nous comptons sur la bonne foi des participants et sur la vigilance des modérateurs.
Les défis tiennent compte d'un certain niveau de connaissances de la programmation en général et en C ou en C++. Ces exercices ne conviendrons donc pas aux débutants qui sont en train d'étudier ce langage. Il est effectivement recommandé d'avoir acquis au moins les notions de bases sur les divers sujets que traitent habituellement les livres et éventuellement avoir un minimum d'approche algorithmique.
Ceci dit, rien n'empêche de consulter les énoncés des défis pour voir ce qui est demandé comme travail ainsi que peut-être y participer si certains s'en sentent néanmoins capable.
2.4. Récompense
Comme tout labeur se doit d'être récompensé, ce défi n'y dérogera pas. Ainsi, le meilleur challenger ou la meilleure équipe se verra récompensé d'un chèque cadeau. Dans le cas des équipes, le chèque cadeau est uniquement remis au responsable identifié de l'équipe, charge à lui après de le redistribuer. Le montant de ce chèque cadeau est de 40€ et il s'agit en général d'un bon d'achat Amazon.
Toutefois, le fait d'être classé dans la catégorie "Responsables DVP" ne donne lieu à aucune récompense, juste le plaisir de participer.
2.5. Présentation des codes sources
Les codes sources doivent suivrent les règles suivantes pour chaque défi mis en place :
- Le code peut être écrit en C ou En C++. Il sera interdit de faire un mixte des 2 langages et d'utiliser un peu de C ici un peu de C++ par là. Le projet doit être ou bien tout en C ou bien tout en C++.
- Le code doit rester maintenable (suivant les défis), on doit pouvoir l'améliorer sans avoir à trop le restructurer (voir pas du tout).
- Le code doit être présentable ce qui implique donc de fournir un code relativement bien aéré (mais pas trop non plus) et avec des tabulations homogènes.
- Des commentaires sur les zones critiques des codes sont vivement recommandés, cela permet de mieux comprendre l'implémentation de chacun.
Lors de la soumission du défi, c'est le projet complet qui doit être remis (à l'exception des fichiers binaires et objets). Si le projet comprend un fichier de génération (makefile par exemple) ou des fichiers spécifiques à l'environnement de développement (Visual Studio par exemple, ceux-ci doivent faire partie de la livraison du projet.
2.6. Écriture des codes sources
Tous les sujets doivent être écrits entièrement en C ANSI/ISO (C89/C90) ou en C++ sauf mention contraire dans l'énoncé du défi en cours.
Les codes doivent également être assez optimisés en terme de vitesse d'exécution et en consommation mémoire, cela peut varier suivant les défis, des précisions seront données dans l'énoncé de chaque défi mis en place. Les algorithmes textuels peuvent être exigés, une mention sera précisée à ce sujet sur chaque énoncé des défis, dans ce cas il faudra alors fournir les algorithmes textuels en plus de l'implémentation.
Les codes sources doivent être testés. Leur compilation ne doit pas laisser paraître d'erreurs ni d'avertissements. Toutefois, les avertissements peuvent pour certains être éventuellement tolérés si vous savez ce que vous faites et que vous pouvez le justifier. Les options de compilation minimum recommandées sont les suivantes pour les sujets :
- en C ANSI/ISO strict : -W -Wall -pedantic -ansi
- en Visual C++ : Niveau 4 et contrôle des problèmes de portage 64 bits activé
Il peut arriver que sur certains compilateurs comme MingW, les deux dernières options de compilation peuvent tout de même afficher des avertissements même si le code source n'en comporte pas, vous pouvez dans ce cas ne mettre que les 2 premiers.
Pour ceux qui sont plus qu'à l'aise avec leur compilateur, vous pouvez faire des paramétrages plus fins si vous le souhaitez.
2.7. Licence des codes sources
Les codes sources doivent obligatoirement être libres de droits pour une éventuelle intégration dans la page Sources C. Cette mention doit être apportée explicitement dans tous les sources du projet.
|
L'accord du participant devra être précisé dans le fichier README qui se trouvera dans l'archive du travail effectué.
|
A titre d'information, le texte de ce d'accompagnement de votre projet pourrait être :
|
Copyright ©2009 <votre pseudo ou votre nom>. Tous droits réservés <votre pseudo ou votre nom>.
Les sources qui constituent ce projet <Nom du projet> de même que la documentation associée sont la propriété de leur auteur.
Je donne mon accord au site developpez.com pour l'utilisation de tout ou partie des sources et de la documentation de ce projet dans les pages developpez.com
|
2.8. Informations à fournir pour chaque soumission
Pour chaque soumission d'un projet il faut fournir obligatoirement les informations suivantes :
- Système d'exploitation sur lequel la compilation et les tests ont été faits.
- Type et fréquence du processeur utilisé.
- Compilateur/EDI utilisé avec les options de compilation.
- Temps passé (approximativement) pour concevoir l'algorithme et faire l'implémentation.
|
Les travaux des participants doivent obligatoirement être fournis sous la forme d'une archive (zip, tar.gz, ...). Il est obligatoire que l'archive contienne un fichier README ainsi que les fichiers nécessaires à la regénération complète du projet.
|
|
Le nom des archives doit obligatoirement avoir le format suivant: pseudo-defis.ext. Où : pseudo = Le pseudo ou nom du participant, defis = Le nom du défi et ext = L'extension de l'archive.
|
|
Les soumissions ne peuvent se faire que par le biais du formulaire de soumission suivant : http://c.developpez.com/defis/upload/. Cette soumission peut être confirmée par un petit MP à tous les membres du jury afin de les informer de la présence de votre travail.
|
2.9. Critères de notations
Les soumissions des participants aux défis sont notées selon les critères suivants :
- Elégance de la solution proposée
- Présentation du code source
- Respect de l'énoncé du défi et des règles en vigueur
- Complexité de l'algorithme (la solution la plus rapide)
- Stabilité de l'algorithme
- Facilité d'utilisation
- Facilité de regénération et de déploiement
- Bonne gestion de la mémoire dynamique
Des critères supplémentaires peuvent être ajoutés suivant les défis.
2.10. Compléments
Pour ceux qui n'ont pas l'habitude d'écrire des algorithmes textuels et vu qu'il n'existe pas de règles strictes sur leur rédaction, vous pouvez vous baser sur les tutoriels suivants écrits par
julp :
Copyright © 2009 Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite
de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans
de prison et jusqu'à 300 000 € de dommages et intérêts.