Article original : Introducing The #ProjectEuler100 Challenge: the "Dark Souls" of Coding Achievements
Les gens me demandent souvent : "comment puis-je me lancer dans la programmation compétitive ?"
Ma réponse a toujours été simple : pratiquez autant de problèmes d'algorithmes et de structures de données que possible.
Mais aujourd'hui, j'ai quelque chose de plus concret pour vous. Un défi qui élargira vos connaissances en informatique et en mathématiques, tout en vous offrant une tonne de pratique en programmation.
Il s'appelle #ProjectEuler100. Et beaucoup de gens ont déjà publiquement accepté le défi.
Le défi porte le nom de Leonhard Euler, l'un des mathématiciens les plus prolifiques de l'histoire.
Leonhard Euler - le mathématicien suisse du 16ème siècle dont ce défi porte le nom.
Cela représente l'apprentissage en mode difficile. Terminer ce défi exigera de la créativité et des compétences en résolution de problèmes que vous ne saviez même pas avoir. Cela fera de vous un développeur incroyablement débrouillard. Cela vous donnera la confiance nécessaire pour aborder les projets les plus ambitieux.
En bref, le défi #ProjectEuler100 sera un creuset où votre moi Super Saiyan sera forgé, prêt à libérer votre génie de l'ingénierie latent sur le monde.
Goku devenant super saiyan.
Qu'est-ce que Project Euler ?
Project Euler est un site web créé en 2001. Il héberge une collection d'environ 600 problèmes d'algorithmes différents qui deviennent progressivement plus difficiles, au point où même les personnes titulaires d'un doctorat en mathématiques ont encore du mal avec eux.
Cela dit, les 100 premiers problèmes sont tout à fait réalisables par un nouveau développeur. Des milliers de personnes ont complété les 100 premiers problèmes de Project Euler au fil des ans.
C'est simplement brutalement difficile. Comme... difficile comme Dark Souls.
Dark Souls est un jeu vidéo célèbre pour être ridiculement difficile. Mais il devient beaucoup plus facile avec une pratique constante - tout comme ces problèmes d'algorithmes.
J'adore les problèmes de Project Euler. Je les ai utilisés extensivement lorsque j'ai commencé à apprendre à coder. Je les aime tellement que nous avons ajouté ces problèmes de Project Euler à la section Préparation aux entretiens de freeCodeCamp.
Ceux-ci vont vraiment faire travailler votre cerveau. Mais ils seront gratifiants. Ils sont difficiles, mais justes. Et si vous êtes prêt à avaler votre fierté et à descendre quelques terriers de Wikipedia, vous pouvez les résoudre, vous aussi.
Alors, qu'en pensez-vous ? Êtes-vous prêt à résoudre les 100 premiers problèmes de Project Euler ? Voici les règles.
Les règles du défi #ProjectEuler100
J'ai tout réduit à ces 6 règles simples que tous les participants doivent suivre.
- Tweetez une photo de vous donnant un pouce levé et annoncez que vous vous engagez dans le défi #ProjectEuler100.
- Créez un dépôt GitHub.
- Chaque fois que vous complétez un défi, ajoutez votre solution à votre dépôt GitHub et tweetez un lien vers celui-ci en utilisant le hashtag #ProjectEuler100.
- Ensuite, parcourez le hashtag #ProjectEuler100 et donnez des commentaires encourageants sur au moins 2 tweets d'autres développeurs.
- Passez au défi suivant de Project Euler. Vous ne pouvez pas sauter en avant. Vous devez compléter les 100 problèmes dans l'ordre. Mais vous pouvez utiliser n'importe quel langage de programmation que vous voulez pour les résoudre.
- Une fois que vous avez terminé les 100, tweetez une photo de célébration de vous avec votre ordinateur portable ouvert sur votre dépôt GitHub.
Où dois-je faire mon codage ?
Vous pouvez utiliser le site web de Project Euler, qui existe depuis 20 ans.
Ou vous pouvez utiliser la version freeCodeCamp.org - qui vous permet de coder directement dans votre navigateur et dispose de tests intégrés.
Ou, si vous vous sentez audacieux, vous pouvez créer votre propre site web pour résoudre ces défis. (Tous les problèmes de Project Euler sont sous licence Creative Commons et sont gratuits pour un usage non commercial.)
Pourquoi dois-je mettre mes solutions sur GitHub ?
Mettre vos solutions sur GitHub (ou GitLab ou BitBucket) accomplira plusieurs choses :
- Cela vous donnera un bel enregistrement public de votre progression que vous pourrez partager avec d'autres personnes.
- Cela rendra votre profil GitHub super actif pour tout employeur ou client cherchant à vous embaucher.
- Cela vous donnera quelque chose à montrer à vos petits-enfants.
Puis-je regarder les solutions des autres ?
Vous pouvez regarder les solutions des autres pour les problèmes que vous avez déjà résolus vous-même.
Chaque défi peut être résolu de nombreuses manières différentes - certaines plus élégantes que d'autres. Et vous pouvez complimenter les autres sur leurs approches.
Cela dit, nous sommes en 2020. La réalité est que les solutions à ces problèmes sont déjà disséminées sur le web. Vous pourriez tomber accidentellement sur une solution si vous cherchez des indices.
Si vous êtes exposé à la solution d'un défi que vous n'avez pas encore complété vous-même, vous ne devez absolument pas utiliser le code que vous voyez là. Vous devez trouver vos propres solutions de code pour chacun de ces problèmes.
Puis-je diffuser mes tentatives en direct ?
Oui. Bien sûr. Comme je l'ai dit, les solutions à ces problèmes sont déjà partout sur le web. Et beaucoup de gens qui regarderaient sur Twitch ou YouTube ne feront pas le défi - ils aimeront simplement regarder des diffusions de programmation en général.
Donc, ne vous inquiétez pas de "gâcher" quoi que ce soit pendant vos diffusions en direct.
Nous diffuserons en direct les tentatives de #ProjectEuler100 sur la chaîne YouTube de freeCodeCamp.
Cela dit, si vous créez des guides vidéo ou des articles que les gens utiliseraient comme référence pour ces problèmes, je vous encourage à inclure des avertissements de spoiler. Les gens veulent des indices pour se débloquer - pas des solutions complètes.
À quelle vitesse dois-je résoudre ces problèmes ?
Pour citer un grand homme :
"Peu importe la lenteur de votre progression, tant que vous n'arrêtez pas." - Leonhard Euler
(OK, cette citation est généralement attribuée à Confucius. Mais toutes sortes de citations sont mal attribuées à Confucius, alors je mal attribue cette citation à mon ami Euler. ?)
Les premiers problèmes sont relativement faciles. Mais ils augmentent rapidement en difficulté. Au moment où vous arriverez aux 20 ou 30 derniers, vous pourriez passer des jours à résoudre un seul problème.
Donc, ne faites pas l'erreur de dire "Je vais finir ceux-ci en 100 jours" ou quelque chose comme ça. Continuez simplement à travailler sur ceux-ci un peu chaque jour. Vous avez toute une communauté autour de vous pour vous aider à franchir la ligne d'arrivée.
La communauté est là pour vous soutenir
Nous sommes tous dans ce défi ensemble. Nous sommes rassemblés autour du hashtag #ProjectEuler100 sur Twitter. Cela est intégré directement dans les règles du défi. ("Règle #4 : Parcourez le hashtag #ProjectEuler100 et donnez des commentaires encourageants sur au moins 2 tweets d'autres développeurs.")
Vous soutiendrez d'autres développeurs qui se lancent dans ce défi. Et ils seront là pour vous soutenir.
Je vous encourage également à rejoindre notre salon de discussion Discord #ProjectEuler100 où vous pouvez discuter du défi et obtenir de l'aide.
Et vous pouvez suivre notre bot Twitter #ProjectEuler100.
Alors, si vous êtes prêt, faites le premier pas. Tweetez une photo de vous donnant un pouce levé et annoncez que vous vous engagez dans le défi #ProjectEuler100.
Vous pouvez le faire.