Les Défis de Clem !

Venez participer aux défis de Clem !

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bienvenue à tous et à toutes !

Vous vous trouvez ici dans la ZestArena, dans laquelle se dérouleront les Défis de Clem.

Les Défis de Clem ? Qu'est ce que c'est ?

Chaque mois, un nouveau défi vous sera présenté. Votre objectif ? Résoudre cet exercice, en utilisant le langage de votre choix. Vous pourrez alors présenter votre solution à la communauté, et en débattre. Ces défis s'adressent à toute la communauté, que vous soyez débutant ou programmeur expérimenté.

Pourquoi les Défis de Clem ?

Participer aux Défis de Clem présente de nombreux avantages :

  • Tout d'abord, ceux-ci vous permettront de pratiquer le langage de votre choix. Et le meilleur moyen d'apprendre, c'est la pratique !

  • En partageant vos codes avec la communauté, vous pourrez obtenir de nombreux conseils, apprendre de nouvelles astuces, et tant d'autres choses encore !

  • Vous pourrez également toucher à des domaines que ne vous ne connaissiez pas jusqu'à présent. Les Défis de Clem seront les plus variés possibles : c'est un excellent moyen de découvrir de nouvelles disciplines, de nouveaux algorithmes, de nouveaux jeux, etc…

Ce topic recense la liste de tous les Défis ayant déjà été publiés.

Défis publiés

  • Défi n°1 :

Septembre 2015 - Une fonction de hachage moderne (par Dominus Carnufex).

  • Défi n°2 :

Octobre 2015 - Créez une calculatrice (par Bibibye).

  • Défi n°3 :

Novembre 2015 - Simulation d'un feu de fôret (par Gabbro).

Ce défi est lié au CdS (Concentré de Savoir) portant sur les arbres.

  • Défi n°4 :

Décembre 2015 - Sudoku (par Ricocotam).

  • Défi n°5 :

Janvier 2016 - Génération automatique d'un texte (par Davidbrcz).

  • Défi n°6 :

Février 2016 - Décryptez les secrets les mieux gardés ! (par Dominus Carnufex).

Offre valable sous réserve d’utilisation d’un chiffrement antérieur au XVIIe siècle. Voir conditions en magasin.


Vous souhaitez rédiger un défi ?

Nous avons besoin de vous ! Si vous souhaitez rédiger un défi qui sera présenté à la communauté dans le cadre des Défis de Clem, faîtes le savoir ! Pour cela, rien de plus simple : envoyez moi un MP, ou postez sur ce topic.

Nous recherchons actuellement des auteurs intéressés pour rédiger les défis des mois qui suivent. N'hésitez pas !

Défis à venir

  • Défi n°7 :

Nous recherchons un auteur !

Idées proposées

Cette liste regroupe toutes les idées et propositions faîtes dans ce sujet. Si quelqu'un se sent inspiré pour rédiger un énoncé, qu'il se sente libre.

  • Sat-Solveur
  • Un interpréteur Lisp
  • Seam carving
  • Résolution problème du cavalier
  • Shunting-yard algorithm
  • Résolution problème des 8 dames
  • Fourmi de Langton
  • Automate cellulaire 1D, 2D
  • Jeu de la vie
  • Perceptron (Neural Network)
  • Language interprété simple sans regex (Lisp like)
  • Exploitation de donnée sur une personne fictive
  • Une carte de France a partir des BDD fournies par le gouvernement
  • Génération de fractales
  • Un simulateur de vague
  • Une étude de bruits (Génération de heightmap)
  • Créateur/solveur de labyrinthe
  • Faire un truc simpa avec de la manipulation d'ADN
  • Jeu de 2048 avec une forme carré puis d'autre forme de grille + IA pour cheat le jeu que l'on vient de créer
  • Code golf: écrire un programme réalisant une tâche précise en utilisant le moins de caractère possible
  • Trouvec le plus de failles à exploiter dans un programme
  • Un code intelligemment moche
  • Comprendre le but d'un programme rendu incompréhensible
  • Cacher du mieux possible une faille exploitable dans un programme
  • Émulateur d'une vielle console ou d'une petite machine virtuelle.

Si vous avez une question ou une suggestion concernant les Défis de Clem, n'hésitez pas à vous manifester ! Vous pouvez également venir en discuter sur le topic relatif à l'organisation de ces défis (par ici).

Édité par informaticienzero

+43 -1

J'ai plusieurs idées:

  • un SAT-Solver, c'est sympa à coder et pas trop long
  • un interpréteur Lisp : plus long mais y'a de l'analyse lexicale, syntaxique, des structures de données, un modèle d'exécution, bref un très bon exercice à mon avis

Vous en pensez quoi ?

+3 -1

En parlant de Fourier, ça me rappelle un copain qui avait fait un PoC de Shazam-like, et qui utilisait justement le spectre pour faire une "empreinte" d'un extrait sonore. Tout ça peut donner des projets super intéressants, mais comme dit Emeric, il en faut aussi pour les débutants.

Pour trouver des idées, il y a ceci: <http://www.reddit.com/r/dailyprogrammer>, c'est plein de challenges rigolos pour tous les niveaux, avec du très facile au carrément galère.

En tout cas c'est vraiment une bonne idée de faire des défis comme ça, ça dynamisera le forum et on découvrira du nouveau.

+2 -1
Auteur du sujet

Dynamiser le forum, et faire découvrir à la communauté font partie des objectifs de ces défis, en effet !

Concernant le niveau des défis, et donc de la participation de ceux qui débutent, on en avait déjà longuement discuté. L'idée qui était ressortie était qu'il fallait découper les défis en plusieurs étapes successives. Ainsi, un débutant serait guidé, et pourrait par exemple ne réaliser que 3 étapes sur 5.

+4 -1

Concernant le niveau des défis, et donc de la participation de ceux qui débutent, on en avait déjà longuement discuté. L'idée qui était ressortie était qu'il fallait découper les défis en plusieurs étapes successives. Ainsi, un débutant serait guidé, et pourrait par exemple ne réaliser que 3 étapes sur 5.

Emeric

Exact, en tant que débutant, si vous me dites SAT-solver avec juste un lien Wikipedia, je pense que je retourne dans ma grotte en pleurnichant.

Hey, moi c'est polio, et je te souhaite une bonne lecture :p !

+13 -1

Perso, je suis pas super chaud pour les problèmes NP-difficiles s'ils sont juste présentés tels quels. En effet, ce n'est pas génial de demander aux gens de faire au algo qui ne s'exécutera pas sur des entrées à peine plus grande que des entrées triviales. De même, ça me gène un peu de laisser les gens avec des algos "imparfaits".

Par contre, ce qui peut être intéressant, c'est de choper une instance d'un problème complexe (au moins NP-difficile) qui ne peut être résolu parfaitement en temps raisonnable, de déterminer une méthode de calcul de score et de demander aux gens d'essayer d'obtenir le meilleur score possible.

Ou alternativement (mais peut-être de manière moins intéressante), on peut proposer la résolution d'un problème qui peut être résolu par un algo polynomiale (ou mieux si les problèmes courant sont de très grande taille).

+1 -1

je pense que je retourne dans ma grotte en pleurnichant.

poliorcetics

C'est marrant c'est ce que j'ai fait.

Bon j'aurai découvert ce que c'était un SAT-solver, mais pour un débutant (comme moi) c'est infaisable ^^

Ça, c'est facile : défi facile

Pour chaque mois à la limite proposer plusieurs challenges de difficulté croissante où alors un challenge sur plusieurs niveaux où à chaque difficulté supplémentaire on rajoute une fonctionnalité.

Édité par Dr@zielux

+1 -1

Ça, c'est facile : défi facile

Dr@zielux

C'est peut être un petit peu trop facile pour certain ;)

Le mieux serait de faire des défis avec des objectifs à atteindre de différents niveaux (pour un même défi) et par exemple pour la notation il y aurait 3 points pour l'objectif de niveau facile, 5 points pour l'objectif de niveau moyen, 8 points pour l'objectif de niveau difficile et 4 points pour la vitesse d’exécution de l'algo (le plus rapide aurait 100% des 4 points, celui qui met 2 fois plus de temps à s’exécuter aurait 50% des 4 points etc…).

Bon après ça c'est en théorie, car il faudrait mettre à disposition un serveur pour que l'on puisse tester la rapidité d’exécution de nos codes sur une machine commune (on a ça à l'université et on ne peut pas tricher) …

Édité par DigitalSuricate

+1 -1
Banni

Concernant l'idée de la vitesse d'execution, pour un même code, la vitesse peut dépendre du compilateur non ? Dans ce cas, tel algorithme peut être plus rapide avec tel compilateur, donc la mesure ne sera pas neutre, suivant le compilateur choisi.

D'autre part, si je décide de coder en AppleScript et que vous n'avez pas de Mac à disposition, vous faites comment ? La question se pose aussi pour le langage Swift actuellement, même s'il sera rendu open-source à l'automne avec un compilateur Linux.

J'espère qu'aucun langage ne sera exclu :) .

Intérêts : OS X, AppleScript, Swift, LaTeX

+1 -1

L'idée des étapes successives pour que chacun y trouve son compte est bonne, mais celle des points ne l'est pas à mon sens. On est ici pour le plaisir d'apprendre après tout. Et pour la vitesse d'exécution à la limite ça peut être une étape avancée ; l'optimisation est un sujet intéressant dans un défi mais il n'est pas forcément primordial.

J'espère qu'aucun langage ne sera exclu :) .

quark67

Plus qu'à espérer qu'au moins une autre personne utilise le même que toi. :p Mais je suis d'accord sur le principe d'accepter tous les langages, la diversité sera intéressante.

Anciennement Sorrow

+0 -1
Staff

Tiens si j'ai le temps j'en rédigerai un sur le Seam carving. C'est un algo de traitement d'image qui donne facilement des résultats sympa, ça se code bien et efficacement avec de la programmation dynamique (ce qui peut être l'occasion de parler de ce genre d'algos) et il y a pas mal d'ouverture facile ensuite (tester différentes fonctions d’énergie, gérer l'agrandissement plutôt que la réduction, corriger les teintes, etc.)

+1 -1

Je plussoie, si ça se fait avec de la programmation dynamique c'est un bon exercice pour découvrir cette technique. Je sais pas si c'est l'exemple le plus simple de prog dynamique, alors on pourrait peut-être mettre une première étape "distance de Levenshtein" corrigée pour montrer comment on raisonne

+1 -1

Le défi doit forcément se présenter sous forme d'implémentation d'un algorithme ou de résolution d'un problème algorithmique ?

En lisant les propositions j'ai l'impression que c'est le cas et personnellement ça me branche pas (mais ça vous vous en foutez j'imagine bien :D ) mais si je peux me permettre quelques suggestions (vous prenez ou pas hein, aucun soucis).

Les challenges algorithmiques, y'en a partout sur le net, très bien encadrés, très bien classés par niveau de difficulté, et certains mêmes avec corrections automatiques. Je vois mal comment faire mieux ici. Certes il y a le côté communautaire qui a lui seul fait que ça reste une bonne idée, clairement je remets pas ça en question. Je me demande juste si y'a pas moyen de faire un peu différent, et peut-être plus amusant pour tout le monde.

Autre point : les "défis algorithmiques", je pense que beaucoup ici vont y passer ou y sont passés. Ne serait-ce que dans leur cursus scolaire passé ou à venir (classes préparatoires, IUT info, concours d'entrée dans une école d'ingénieur ou au sein de l'école elle-même). Alors qu'il y a, à mon avis, des sujets sympas sur lesquels bosser et qui ne sont pas de l'algorithmique.

Mais alors quoi ?

J'avais proposé il y a longtemps de réaliser de gros projets à nous tout seul. Le problème c'est que c'est sans doute un peu trop gros à attaquer de front. Et surtout que trouver l'idée parfaite qui permet d'impliquer tout le monde quel que soit le langage est compliqué. Donc c'est pas vraiment ça.

Mais pourquoi pas des ateliers plus orientés "fonctionnel". Je m'explique :

Plutôt que de partir d'un problème mathématique ou algorithmique, pourquoi ne pas plutôt partir sur un problème fonctionnel concret :

  • soit carrément un atelier amusant comme le Javaquarium, où on sait où l'on va et ce qu'on veut obtenir (un truc qui simule un aquarium avec des poissons dedans)
  • soit un problème de la vie courante autour d'un thème (par exemple l'IoT ou les GIS, …) et choisir une problématique là-dedans (typiquement : comment découvrir des appareils à portée de réseau si thème IoT, ou comment passer d'une projection géographique à une autre si thème GIS). Et de là on peut saucissonner le gros thème en petits ateliers : par exemple quelqu'un créera une petite GUI, d'autres livreront un bout de programme qui peut tourner sur un Arduino, …). Ou alors un thème alakon : tester la sécurité de son serveur web, il existe une tonne d'outils sur le net pour faire ça mais ça pourrait être rigolo de construire une GUI qui appelle des scripts écrits par plein de gens différents réalisant chacun un type d'attaque ? Enfin vous saisissez l'idée.

Bref l'idée c'est de chercher des problèmes de la vie courante, ce que je trouve (mais c'est que mon avis hein, entendons-nous bien) plus motivant que de résoudre des problèmes théoriques, ce que je qualifierai d'approche un peu plus "scolaire". Mais cela dit, rien qu'avec cette approche y'a énormément matière à faire des trucs très sympas pendant bien longtemps et je salue l'initiative :)

EDIT : Mmmh OK, j'étais passé à côté de ce topic qui a initié l'idée. On comprend mieux que l'idée c'est effectivement des exercices de programmation et à vocation d'apprentissage de l’algorithmique. Donc my bad c'est pas du tout l'idée du truc

Édité par Javier

Happiness is a warm puppy

+4 -1
Staff

Boarf. C'est un exemple d'application mais en détaillant bien c'est pas compliqué. En tour cas je pense que c'est un bon sujet de défi. Au pire on pourra le classer avec un niveau plus compliqué que d'autres.

+0 -1

Personnellement, je pense qu'on loupe une opportunité non pas en se limitant à l'algorithmique … Mais en se limitant à l'informatique tout simplement …

Après tout, le jour où on parlait en alexandrin, plusieurs des membres de ce topic étaient partant … Si un jour il devait y avoir un défis d'électronique, ça pourrait intéresser pas mal de monde … Les défis Mathématiques du style Micmaths mais à la sauce SdZ ça pourrait également le faire …

Si Zds n'est pas qu'un site d'informatique alors les défis devraient également représenter cet aspect 'ouvert' du site et proposant "occasionnellement" des défis autres qu'informatique.

En plus, ça permet de se reposer pendant un mois pour préparer un gros défis (par exemple un défis qui demande l'utilisation d'un serveur externe pour tester un résultat ou le temps de calcul) et de varier les sujets …

Bref, c'était mon avis sur le sujet. Je suis 100% d'accord avec l'idée, sinon. J'essayerais de rédiger un défis comme je l'avais fais sur le SdZ.

Édité par ache

ache.one                                                                                   🦊

+4 -0
Staff

@Javier et @ache : Pour moi vos deux remarques sont pertinente mais pas incompatible avec l'actuel. Si on attend d'avoir la formule parfaite, on ne fera jamais rien.

Je pense que ça vaut le coup de lancer ces défis. Il sera toujours temps plus tard de les rendre moins algorithmiques si on a des idées. Des projets communautaires peuvent être lancé en parallèles tout comme des défis pour d'autres sujets. Le fait que ce sujet existe n’empêche pas de lancer des défis math dans le forum dédié.

Bref je comprend vos remarques mais je pense que chercher à modifier ce sujet pour les prendre en compte n'est pas la bonne idée. Ces idées devraient se développer dans un sujet à part : soit tenter de trouver un projet communautaire, soit d'autres thématiques de défis. Mais ce n'est pas une raison pour ne pas tenter de lancer ces défis (je pense).

Édité par Kje

+1 -1

Ouais j'ai édité mon message en fait j'étais passé à côté du topic qui a initié l'idée. Je te rejoins complètement, c'est "trop tard" en quelques sortes et ces problèmes ont déjà été soulevés. Donc j'en reviens à "moi perso ça m'intéresse pas" mais je pense que ça intéressera tout plein de monde et que y'a matière à faire des trucs très sympas.

Happiness is a warm puppy

+1 -1
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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