Organiser des défis/exercices de programmation

a marqué ce sujet comme résolu.

Bonjour,

J'ouvre ce topic afin de discuter d'une animation possible pour le forum. Je me souviens, à l'époque de (feu) Sdz, trouver sur le forum C de temps en temps des propositions d'exercice à résoudre qui provenaient de différent site comme project euler. L'idée c'était alors que chacun proposait à sa sauce un petit programme dans n'importe quel langage pour le résoudre.

C'est un bon souvenir pour ma part car

  • c'était une manière de progresser dans un langage en apprenant des astuces
  • apprendre de nouvelles structures de données
  • pratiquer un langage

L'idée serait de donner un cadre à ce genre d'exercice. C'est à dire proposer (par exemple) régulièrement un défi intéressant à résoudre. Les recenser dans un topic et pour chaque défi, discuter des solutions proposées.

Ce topic vaut lieu de sondage et de débats afin de décider de l'organisation.

Donc, seriez-vous intéresser par cette initiative ? Comment souhaiteriez-vus que cela soit organisé ? Par exemple un challenge tous les mois ? Cibler un type de problème en particulier ? Donner un score aux membres ?

J'attend donc vos commentaires ;)

Hello,

L'idée serait de donner un cadre à ce genre d'exercice. C'est à dire proposer (par exemple) régulièrement un défi intéressant à résoudre. Les recenser dans un topic et pour chaque défi, discuter des solutions proposées.

Je trouve l'idée très bonne. Pour la réalisation, je ne sais pas trop comment tu vois ça.

Donc, seriez-vous intéresser par cette initiative ? Comment souhaiteriez-vus que cela soit organisé ? Par exemple un challenge tous les mois ? Cibler un type de problème en particulier ? Donner un score aux membres ?

Mon avis:

  • Un mois entre deux sessions semble être un bon rythme.
  • Les challenges/défis/problèmes doivent être aussi variés que possible.
  • Ils ne doivent pas se cantonner à un langage de programmation.
  • Le score me semble superflu, voire difficile à mettre en place. Surtout si on mélange les langages. Il faut des juges, donc des personnes capable de juger un code dans à peu près tout les langages. Et pouvoir comparer par rapport à un autre langage. Après ça peu être un point pour la participation et n points pour la résolution (en fonction de la difficulté du défi?)

Proposition de nom pour l'événement régulier : les défis de Clem

+1 -0

Je trouve que l'idée est tres bonne et même si c'est déjà faisable, un pseudo-cadre avec un ou deux membres chargé de cadrer ça serait idéal (ce seraient eux qui se chargeraient de publier à fréquence régulière, mettrait a jour un meta-topic vers tous ceux déjà sorties, etc.).

Les scores me semblent a la fois compliqués a mettre en place, inutile, pas vraiment dans l'esprit du site (on est pas là pour jouer au meilleurs mais discuter et échanger) et risque de poser des problèmes inutiles "Bouh pourquoi moi j'ai eu tel note ?".

Par contre a la fin d'une session on pourrait imaginer décerner des prix spéciaux. Par exemple sur des critères objectifs (code le plus efficace/rapide, code le plus concis, celui qui a récolté le plus de +/1, etc.) et des critères subjectifs mais bon enfant (code le plus original, code le plus offusqué, langage le plus exotiques, etc.). Ces prix subjectifs pouvant varier d'une sessions a une autre en fonction des participations.

Excellente initiative !

Les exercices du SDZ m'ont beaucoup aidé à progresser dans un langage et intéressé avec des types de pbs variés.

Je ne suis pas fan non plus de notation …

En pratique, sur le SDZ (dans le forum Python), il y a eu à un moment une table à cliquer avec des liens vers les posts proposant un exercice ; c'était très pratique avec en plus un classement par niveau de difficulté approximatif. C'était peu être un peu compliqué à gérer car ça a été abandonné mais perso j'ai beaucoup apprécié !

Ok !

La notation individuelle on laisse tombé, c'est pourri je suis d'accord. Je me demande cependant s'il ne serait pas intéressant de mettre en valeur des solutions qui sont intéressantes sans pour autant les noter ?

Je rejoins l'idée d'avoir un topic recensant les différents exercices proposés. Cependant comme le souligne @Kje, on peut déjà proposer des exercices. Donc ce topic pourrait aussi recensé les problèmes proposés par les membres en dehors du cadre posé.

Je pense que si on met un cadre autour de ces exercices, ce qui est intéressant, c'est de rédiger à la fin, une solution pour le problème (en précisant une ou plusieurs approches possibles).

Comment varier les exercices ? Et qu'est-ce qu'on entend par varier ? J'avoue je n'ai pas trop d'idées sur le sujet. Une idée qui me viendrait serait de proposer un exercice (ou deux) lié(s) à un algorithme ou une approche particulière :

  • Algorithmes de tris
  • Glouton
  • Parcours de graphes
  • Algorithme dynamiques

(Sans dévoilé évidemment l'approche à utiliser sinon c'est trop facile)

Si vous avez d'autres idées, je suis preneur.

Enfin, pour le titre, les défis de Clem, j'aime bien. A voir si ça plait à d'autres personnes.

Dernier point : qui veut s'en occuper ? Si j'ai lancé la discussion, c'est que ça m'intéresse, donc je suis partant. Mais être tout seul pour l'organisation, ça m'embête un peu. Je préférerai être deux ou trois afin d'avoir un petit consensus sur les exercices à proposer et les méthodes à aborder.

En espérant que cela en motive un peu plus ;)

Salut,

je salue fortement l'initiative : sans s'exercer, on ne progresse pas !

Je suis pour les défis indépendants du langage qui forcent à faire des exercices plus orientés algorithmique que spécificités du langage ! Je pense par contre ne pas pouvoir beaucoup aider pour l'organisation car je suis un piètre rédacteur d'exercices. ^^ Cependant, je me ferai un plaisir de participer et de faire tourner !

+1 -0

Salut,

je salue aussi cette idée. Bon, je ne sais pas quand je pourrais avoir du temps pour aider à organiser, mais j'essaierai de participer au mieux quand ce sera en place.

En ce qui concerne ces questions :

Comment varier les exercices ? Et qu'est-ce qu'on entend par varier ? J'avoue je n'ai pas trop d'idées sur le sujet. Une idée qui me viendrait serait de proposer un exercice (ou deux) lié(s) à un algorithme ou une approche particulière :

  • Algorithmes de tris
  • Glouton
  • Parcours de graphes
  • Algorithme dynamiques

(Sans dévoilé évidemment l'approche à utiliser sinon c'est trop facile)

Saroupille

On peut aussi de temps à autre ajouter des ateliers un peu plus complexes comme implémenter une idée jusqu'au bout. Mais ça sera plus long aussi bien pour l'organisation que la réalisation.

+0 -0

C'est ce qui se rapproche de mon sens de défi : une solution clairement ouverte pour que les membres en discutent, comparent leurs solutions, leurs choix d'algorithmes, de structures de données, etc. Quand il n'y a qu'une seule solution attendue, il est, selon moi, plus question d'un exercice, mais alors il me semblerait plus judicieux de faire ces derniers dans un langage particulier.

Ce sont donc deux choses différentes à mettre en place selon moi.

+0 -0

Ce genre d’initiative peut en effet être intéressante, toutefois j’ai l’impression que le niveau demandé sera relativement élevé. Ce n’est pas nécessairement une mauvaise chose en soit mais si Zeste De Savoir veut attirer un publique débutant il faudrait peut être décliné le truc en plusieurs « saveurs » différentes.

L’exemple type qui me vient à l’esprit c’était l’atelier spacebitton, le sujet était bête à manger du foin, et c’est pour ça que ça marche. Si on veut un peu de dynamique sur le forum il faut des choses faciles d’accès. Parce que un sujet ou l’on parle d’algorithme dynamique je peux parier qu’il n’y aura pas plus de trois participants avec de la chance. D’abord parce que peu de monde sera en mesure appréhender le sujet, ensuite parce que ces personnes ont généralement leur propre projet.

Donc pourquoi pas mais sachez que le publique sera restreint si ça reste dans l’esprit prologin.

+6 -0

Tu soulignes un point important. Et je pense que tu as raison. Cependant, le but de ces ateliers, ou défis est principalement pédagogique. Si dans ce cadre, quelqu'un présente une thématique basée sur la programmation dynamique, on peut imaginer que le premier exercice classique du genre sera de coder Fibonnaci. Ensuite, je suppose que l'auteur proposera d'aller plus loin.

Un concept intéressant que je trouvais dans les exercices proposés étaient d'avoir différents niveaux (souvent liés à la difficulté). C'est un truc que j'aimerais bien retrouver ici. Afin de pouvoir contenter un maximum de gens.

Ca dépend de comment seront organisés les ateliers, si un seul exercice est proposé, ou plusieurs etc… Mais avec ta remarque je pense sérieusement pour avoir plusieurs exercices proposées pour satisfaire le plus de gens.

Tu peux aussi avoir un problème avec plusieurs solutions qui sont plus ou moins efficaces. C'est différent et ce n'est pas pour autant inintéressant puisque cela peut permettre de découvrir des nouvelles structures de données.

Saroupille

Oui, mais ça, c'est valable pour tous les problèmes, c'est pour ça qu'on fait de l'algo et de l'optimisation : pour trouver les meilleurs choix à faire.

Sinon, je suis pour l'idée de niveaux multiples !

+0 -0

Moi l'esprit prologin ça me va :p Sinon l'idée de niveaux de plus en plus complexe me semble vraiment pas mal, ça permet d'élargir le public et de faire tourner la machine tout en faisant plaisir à tout le monde. De plus les gens qui ont envie de progressé seront sur de trouver des conseils, et ça c'est important. Sinon pourquoi pas de temps à autre si le projet est mis en place et tourne (genre tous les trois mois) faire des battles d'algo comme à la finale de prologin? L'avantage c'est qu'une fois l'épreuve passé on pourrait voir le code de chacun. Je pense pas que ce soit judicieux de faire ça avec des regles complexes (pas besoin des 36h ;) ); par contre ça permettrait d'apprendre pas mal de chose sur la manière de coder des gens (quand j'ai participé à prolog mon code était vachement efficace par contre il faisait plus du double de la moyenne :p).

Ca dépend de comment seront organisés les ateliers, si un seul exercice est proposé, ou plusieurs etc… Mais avec ta remarque je pense sérieusement pour avoir plusieurs exercices proposées pour satisfaire le plus de gens.

Saroupille

Je pense honnêtement que ça vaut le coup d’y réfléchir parce que ce n’est pas si simple que ça. Par exemple sur le forum C du site du zéro il y avait ce genre de chose. Je crois que c’est à peut près ce dont il s’agit ici dans l’idée (même si pas centré sur le C, c’est entendu). Pourtant ça ne se pressait pas au portillon en terme de participation alors que le trafique du site était autrement plus important que celui qu’on a ici.

La question est pourquoi ça n’a ne marchait pas plus que ça ? Les sujets étaient pourtant abondants, variés, avec plusieurs niveaux de difficultés. Il y avait probablement un manque de communication et de visibilité (peut être que la ZEP-04 réglera en parti ce problème), mais ça ne peut pas être la seule raison.

Sinon pourquoi pas de temps à autre si le projet est mis en place et tourne (genre tous les trois mois) faire des battles d'algo comme à la finale de prologin? L'avantage c'est qu'une fois l'épreuve passé on pourrait voir le code de chacun

Ça ne marche pas, la preuve

+0 -0

Pour rebondir sur la faible participation, j'avais essayé de proposer une sorte d'exercice, sauf que le but était de créer une solution commune, et pas une solution chacun, et il n'y avait eu aucun engouement. Je ne sais pas si c'est à cause de la période, si c'est parce que les membres n'ont pas trouvé le sujet ou la démarche intéressant, mais ça vaut peut-être le coup d'essayer d'analyser cet échec quelques minutes, pour lancer quelque chose de mieux.

J'avais aussi lancé un exercice avec 0 réponses. C'est pour ça que je me demandais si donner un cadre à ces exercices ne donnerait pas un peu plus d'engouement ? Cela permettrait peut-être d'avoir plus de visibilité si il y a un sujet en post-it, si pour le lancement du premier exercice, on crée une news (voir pour les suivantes) etc…

+0 -0

Si ça peut aider, j'ai dans ma biographie une liste de liens avec tous les exercices et (feu) zDéfis proposés en leur temps sur (feu) le SdZ, avec aussi quelques liens vers des topics où étaient écrits toutes les idées possibles. Je le remet ici, pour la pérénité.

zDéfis du forum C

Exercices tirés du forum C

  • zReader : manipuler les fichiers.
  • zBinary : algorithmique et binaire.
  • zTri : récupération des secondes système, comparatif de tris.
  • zStrcapitalize : recoder la fonction strcapitalize.
  • zAddition : pure algorithmique, matrices.
  • zMath : algorithmique, pile.
  • zGame
  • zStrstat : chaînes de caractères.
  • zStrsearch : chaînes de caractères.
  • zBrace : algorithmique, expressions parenthésées.
  • zGrep : récupération des paramètres du main, algo sur les chaînes, manipulation de fichier, analyse séquentielle.
  • z0zéro : écrire un nombre en toutes lettres.
  • zSommeChiffres : Calculer la somme des chiffres d'un nombre donné. Compter le nombre de fois où une somme est présente dans un intervalle donné.
  • zArray1D : pratique des tableaux à une dimension.
  • zBigInt : opérations surs les grands entiers.
  • zLCD : simulation d'un afficheur 7 segments.
  • zCoupure : jouer au banquier.
  • zWordCount : manipulation de fichiers.
  • zJustificator : justification de texte.
  • zTransforme : manipulations basiques de tableaux.
  • zPointeurs : manipulations de pointeurs.
  • zIdentificator : algorithmique.
  • zChance : manipulation du temps et/ou pratique algorithmique.
  • zConvert : conversion chiffre -> chaîne de caractères.
  • zCalc : créer une calculatrice.
  • zCrypt : initiation au cryptage.
  • zSpirale : boucles, manipulation de tableaux à 2 dimensions et allocation dynamique.
  • zMorp - 1ère partie : un jeu de morpion en console.
  • zMorp - 2ème partie : maintenant, l'IA.
  • zMorp - SDL : même principe, mais version graphique cette fois.
  • getline
  • zConjug : manipulation de chaînes de caractères.

Salut,

On peut aussi de temps à autre ajouter des ateliers un peu plus complexes comme implémenter une idée jusqu'au bout. Mais ça sera plus long aussi bien pour l'organisation que la réalisation.

Sorrow

On peut deja faire des choses assez complexes et utiles avec les notions citees. Quand est-ce qu'un algorithme glouton est optimale ? Ce qui oblige a parler d'ensemble d'independance et de matroide par exemple. Pour les algorithmes de parcours de graphe il y aussi plein de questions sympathiques.

Je dois avoir pas mal de choses la dedans, qui mele a la fois exercices pratiques et questions theoriques sous forme d'exercice.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte