Le 25 octobre à 18 h aura lieu CodinGame #2, un challenge de programmation qui permet de remporter des Nexus 7 et, pour ceux qui le souhaitent, de trouver un boulot. C’est gratuit, ça se passe en ligne et c’est anonyme.
L’épreuve dure 3 heures, pendant lesquelles il faut essayer de résoudre 3 problèmes dans le langage de son choix parmi C, C++, Python, PHP, Java et C#. L’environnement de développement proposé donne accès à un éditeur de code et un shell Bash, pour lancer son programme depuis le navigateur.
Vous pouvez aussi venir sur place :
Cap Omega, Rond-point Benjamin Franklin, 34960 Montpellier.
NdM : Il semble qu’il ne soit pas requis que le code produit soit libre/open source…
Aller plus loin
- Page d’inscription (529 clics)
- Tutoriel pour s’entraîner (1247 clics)
- Le site des CodinGame (525 clics)
# Zut, pas de langage sympa
Posté par Bruno Michel (site web personnel) . Évalué à 9.
Je me serais bien inscrit à ce concours mais il n'y a pas de langage que je maîtrise bien (Ruby, JS, Golang), ni que j'ai envie d'apprendre (Rust, F#, Clojure). Je trouve dommage qu'il n'y ait qu'une liste très restreinte de langages que l'on peut utiliser lors d'un tel concours. Pourtant, c'est une limite assez artificielle : un autre concours, l'Agile Cup, a su éliminer cette contrainte.
La plateforme de l'Agile Cup fonctionnait avec un énoncé (résoudre un labyrinthe) décliné en plusieurs niveaux de difficulté croissante (25 niveaux IIRC). On développait son programme chez soi, celui-ci se connectait au serveur de l'Agile Cup pour récupérer le premier niveau, le résoudre puis envoyer la solution au serveur. Si la solution était correcte, on avait alors accès au second niveau… pour 10 secondes ;-)
Le but était donc d'avoir un programme de plus en plus complet, capable de passer tous les niveaux. Et comme ce programme tournait chez soi, on pouvait le coder dans le langage de son choix. J'espère que cela inspirera les organisateurs de CodinGame pour les prochaines éditions.
PS : pour être honnête, je ne suis pas dispo le 25 octobre (vous saurez bientôt sur LinuxFr.org pourquoi ;-) ), sinon, j'aurais tenté le coup avec le C.
# Ma participation.
Posté par Dinosaure (site web personnel) . Évalué à 4.
Au sein de mon école, on m'a poussé à venir faire ce concours. Aujourd'hui, je ne peux pas réellement dire si je vais participer ou pas (je suis en stage et je rentre généralement à Montpellier vers 20h) mais j'aimerais bien pour relever le défi de mes collègues. Au-delà de ça, j'ai compris que votre barème porté l'accent sur la qualité du code. En ayant fait les exercices d'entraînement j'ai remarqué votre notation et en discutant avec d'autres personnes qui ont fait le concours l'année dernière, j'ai pris en compte le niveau aussi.
En somme, je suis assez curieux de savoir comment vous pouvez analyser la qualité du code. Est ce que c'est fait de façon automatique, par le biais d'une moulinette (ce que je pense) ou par l'humain. Les critères qui sont sortis dans mon test sont semblables à ceux qu'on retrouve dans des concours comme Prologin ou encore les Olympiades Informatiques ou même la manière dont est corrigé mes projets dans mon école, en réalité, je ne vois pas la différence entre votre concours et les autres au niveau de la notation.
De plus, la qualité d'un code peut être très subjectif par le biais de la définition qu'on peut donner à « qualité ». En somme, j'aurais la capacité de résoudre vos exercices en une seule ligne de code en C (ou en essayant de faire du ASCII-Art), on ne pourra malheureusement pas dire que je fais preuve de qualité dans mon code (maintenabilité, partage, etc.) et pourtant celui-ci peut très bien fonctionner et passer tous vos tests.
Je m'interroge donc. Et c'est drôle de voir un évènement de Montpellier sur LinuxFR.
# Annales
Posté par Benoît Ganne (site web personnel) . Évalué à 8.
Est-ce que les problèmes de l'édition précédente et de l'édition courante pourraient être accessibles ?
Je ne pourrais pas y participer (un peu trop tôt pour moi) mais j'aime bien ce type d'exercices… Et l'interface est vraiment bonne, 100x meilleure que celle de topcoder !
Sérieusement c'est la meilleure interface que j'ai vu pour l'instant (entre l'interface mail des annales ACM pas hyper interactif et l'interface foireuse en java de topcoder).
Sinon si vous avez des adresses pour des concours/exercices de ce genre, je prends !
[^] # Re: Annales
Posté par Frédéric Desmoulins (site web personnel) . Évalué à 3.
Salut Benoît,
Merci pour ce retour, on a aussi l'auto-completion dans les tiroirs pour se rapprocher d'un véritable IDE qui ne devrait pas (trop) tarder.
Les problèmes de cette édition seront dispo après l'event. Je ne sais pas encore comment, mais ils le seront.
Quelques adresses : http://projecteuler.net, http://www.spoj.pl et http://www.codechef.com/
[^] # Re: Annales
Posté par Frédéric Desmoulins (site web personnel) . Évalué à 3.
Les voila !
http://www.codingame.com/challenge2_question1
http://www.codingame.com/challenge2_question2
http://www.codingame.com/challenge2_question3
# Lisibilité
Posté par Georges Dubus (site web personnel) . Évalué à 5.
J'ai essayé leur tuto avec python, et j'ai perdu 5% des points pour avoir utilisé map, ce qui est censé nuire à la lisibilité.
Genre
c'est moins lisible que
Ça me gave ces gens qui ont jamais rien vu d'autre que du Java dans leur vie et qui flippent dès qu'ils voient la moindre trace de paradigme fonctionnel.
[^] # Re: Lisibilité
Posté par Maxime (site web personnel) . Évalué à 4.
Je n'arrive plus à retrouver les références qui vont bien alors j'espère ne pas raconter des conneries mais il me semble que map est boudé par des gens très influents parmi ceux qui font Python et les list comprehension sont préférées. Si quelqu'un me retrouve des sources à ce sujet, ça m'intéresse.
La seule source que j'ai retrouvé c'est d'un type qui a écrit des livres sur Python (et avec qui j'ai travaillé directement :)) : il dit que map c'est bien avec des fonctions mais dès qu'on est obligé de sortir une lambda il vaut mieux utiliser une list comprehension. http://effbot.org/zone/python-list.htm
Bref dans ton cas c'est bien utilisé, c'est peut-être juste une mauvaise analyse automatique… Mais c'est un peu rapide et surtout pas cool de les traiter de dev Java. Au passage, dans certains cas il faut faire attention avec map avec les changements de Python 3 (avant c'était de type list). Lorsqu'on est obligé de rajouter des list() autour de ses appels à map, ça perd de son charme.
[^] # Re: Lisibilité
Posté par Dinosaure (site web personnel) . Évalué à 2.
Je comprends pas vraiment cette critique et surtout cette comparaison avec dans le lot le paradigme fonctionnel … La première chose, c'est qu'en ignorant la remarque de Maxime (qui est pertinente, hein !), les deux lignes sont équivalentes sur la lisibilité du code (quand bien même, et je le redis, cette affirmation est subjective). Ensuite, que cela soit le premier exemple ou le deuxième, tout deux ne sont pas incompatible avec le paradigme fonctionnel. Les listes en compréhension par exemple sont très utilisé en Haskell et la fonction
map
est très utiliser en OCaml (à défaut de n'avoir pas les listes en compréhension nativement - on peut les utiliser avec Batteries). Au final, je ne vois pas le lien avec cette phrase: « Ça me gave ces gens qui ont jamais rien vu d'autre que du Java dans leur vie et qui flippent dès qu'ils voient la moindre trace de paradigme fonctionnel. ».Au-delà de tout ça, il est vrai que perdre 5% des points pour l'utilisation de l'une ou de l'autre est exagérer et cela ne devrait pas être le cas. Il y a donc bien un côté subjectif derrière tout ça et de plus, ce concours n'apporte réellement rien de novateur par rapport aux autres concours que j'ai cité plus haut (puisqu'on enlève ici le l'approche qualité qui semble être au cœur de votre communication) donc, au final, il n'est pas très gratifiant de participer à ce genre de concours et il n'y a que l'appât du gain qui me fera prendre le Tram pour aller le faire. Mais sinon, rien d'intéressant à signaler sauf si vous (je parle de l'entreprise qui ne semble pas dire un mot) me prouver le contraire (et je serais très heureux de débattre).
[^] # Re: Lisibilité
Posté par Frédéric Desmoulins (site web personnel) . Évalué à 6.
Désolé de ne pas avoir répondu tout de suite. Ce n'est peut être pas clair, mais la lisibilité n'est pas prise en compte dans le score, c'est informatif seulement (dernier point de la FAQ http://www.codingame.com/cg/#!faq). Avec Python c'est pylint qui est utilisé et qui remonte le problème que Georges évoque (je suppose que les personnes qui ont réalisé pylint ne sont pas des développeurs Java, mais il faut le leur demander ;-)).
Du point de vue de "l'entreprise", les codingame on pense juste que c'est un concept sympa pour permettre à n'importe quel codeur qui aime programmer de trouver un boulot autrement. Derrière cet évènement, c'est une petite startup Montpellieraine qui casse sa tirelire avec 5 nexus7.
On a beaucoup bossé autour de l'environnement de dev en ligne et les compliments dans ce sens nous on fait particulièrement plaisir !
[^] # Re: Lisibilité
Posté par Dinosaure (site web personnel) . Évalué à 2.
C'est agréable de voir une réponse de l'entreprise sur linuxfr :) ! Il est vrai que l'environnement en ligne est très bien fait, en tout cas, j'ai pas eu de gêne quand je l'ai utilisé ce qui est pas mal en somme (j'ai ma configuration vim aux petits oignons). Après, j'ai plus été interpeller dans votre présentation général sur le site par cette approche qualité justement (d'où ma critique) ce qui fait que j'ai un peu ignorer l'interface que vous proposé.
Après, les concours menés par des entreprises sont en général un moyen de sponsoriser un produit derrière (et je pense que ici, c'est votre interface utilisateur) mais j'ai plus pensé que c'était pour montrer ce côté « notation sur la qualité du code », ce qui m'a beaucoup gêner au départ. Au final, et après ce malentendu que j'ai fait, je peux seulement dire que ce que vous faites est louable.
Je rajoute un dernier point pour vous demander les technologies que vous utiliser pour l'UI. Bien entendu, je comprendrais que vous ne puissiez les divulguer mais puisqu'on est sur un site où le Libre est le mot maître, autant s'ouvrir un tout petit peu et faire un partage juste de votre expérience. Personnellement, je m'intéresse guère aux UI mais cela peut intéresser certaines personnes :) !
Bonne continuation et j'espère être là pour le concours.
[^] # Re: Lisibilité
Posté par Frédéric Desmoulins (site web personnel) . Évalué à 2.
La dernière fois c'était vraiment sympa et j'espère que le 25 ça sera au moins aussi bien.
Coté UI, nous utilisons GWT avec GWT-fx pour les animations. Le design a été réalisé avec Inkscape. Les font proviennent de Google WebFonts et l'éditeur de code c'est celui de ace.ajax.org
# Pourquoi en semaine ?
Posté par huit_six . Évalué à 2.
Dommage que ce soit en semaine, je me serais inscrit sinon…
Le week-end ce serait plus adéquat pour les personnes qui travaillent.
# Je me suis inscrit
Posté par Xavier Faure (site web personnel) . Évalué à 2.
Je me suis aussi inscrit juste pour le plaisir : l'interface est vraiment agréable et les deux exercices donnés à titre d'exemple montrent l'intérêt de voir son code analysé par un tiers. Programmeur Python, je me suis étonné comme Georges Dubus de la sanction des -5% due à l'emploi de map mais j'ai apprécié l'intervention de Frédéric Desmoulins et le fait que cette sanction ne soit donnée qu'à titre informatif. Bref, l'un dans l'autre, un bon moyen de s'amuser !
Trust the Python !
# Inscrit!
Posté par MCMic (site web personnel) . Évalué à 3. Dernière modification le 23 octobre 2012 à 20:53.
Je suis inscris, j'espère ne pas oublier le moment venu !
J'ai fait les entraînements en C++, l'IDE est sympa, je sais pas si je coderai dedans pour le concours, ya des trucs qui passent pas, genre le copier/coller à la molette veut pas, puis sur mon Geany j'ai mes raccourcis clavier et autres petites habitudes.
[^] # Re: Inscrit!
Posté par MCMic (site web personnel) . Évalué à 2.
C'était sympa, j'ai passé les deux premiers exercices sans difficulté et le dernier c'était l'horreur…
J'avais l'impression que ça nécessitait des connaissances en mathématiques que je n'avais pas (en stats plus précisément), en tous cas j'ai vraiment pas trouvé la solution donc j'ai fait une grosse boucle bourrine en sachant que ça répondrait pas aux critères de performance. Les orgas m'ont confirmé par mail qu'il fallait pas de connaissances particulières en maths, j'en jugerai plus précisément quand on aura une correction.
Tout ça m'a permis d'avoir 90% des points en 1 heure (dont 45 minutes sur le dernier -_-)
Au final je suis classé 39ème sur 220 rendus.
On attends toujours les corrections donc je sais toujours pas comment on était censés faire le dernier, mais ils ont promis les corrections pour ce week-end :-)
J'ai aussi trouvé dommage de pas avoir un chan IRC pour l’évènement. Ça aurait permis un truc un peu convivial pour ceux qui ne sont pas sur place.
PS: dans ceux qui ont eu 100% yen a un qui a rendu en 3h10, ce qui parait louche pour un concours ayant eu lieu de 18 à 21h oO
[^] # Re: Inscrit!
Posté par Nicolas Antoniazzi (site web personnel) . Évalué à 2.
Salut MCMic,
Bravo pour ton résultat, c'est vraiment bien 90%. On essaye de se dépêcher pour préparer le premier billet du blog avec les photos de l'event et les corrections. En fait, on va surtout essayer de voir si les candidats qui ont eu 100% nous autorisent à publier leur source.
Super idée le channel IRC, on y pensera pour le prochain concours. Sinon, on a finalement décidé d'augmenter légèrement la durée du concours. Chaque question faisait 80 minutes, soit 4h maximum au total.
[^] # Re: Inscrit!
Posté par MCMic (site web personnel) . Évalué à 3.
Ha ok.
J'ai du mal à penser que quelqu'un qui ait besoin de beaucoup de temps sur les premières questions parvienne à faire la troisième dans le temps imparti ^
Pour le canal IRC j'avais été sur irc.freenode.org/#codingame pour voir mais c'était vide. Pour la prochaine version il vous suffira d'y mettre un lien (voir un lien vers le client web de freenode) et ce sera surement plus peuplé.
L'autre chose qui m'a gêné était que le site web ne soit pas mis à jour. Il semblait toujours proposer l'inscription, que ce soit pendant l'évènement ou encore après. Préparer une version du site sans l'inscription et indiquant "concours en cours… fin dans XX min" et une autre avec "Le concours est maintenant terminé" aurait aidé à plus de clarté à mon avis :-)
Ah, et pour ce qui est de publier le code des gagnants, vous feriez peut-être mieux d'ajouter une case à cocher à l'inscription "J'autorise CodinGame à publier mon code" (voir "Je le met sous licence libre"), ça vous permettrait de publier au plus tôt, je pense que beaucoup de gens la cocherait.
[^] # Re: Inscrit!
Posté par Nicolas Antoniazzi (site web personnel) . Évalué à 3.
Oui, merci pour toutes ces suggestions.
C'était la première fois qu'on organisait un concours comme celui là au niveau national et ça nous a permis de nous rendre compte de pleins de petits détails à améliorer pour les prochaines fois.
On met en place petit à petit toutes ces corrections.
Encore merci en tout cas pour tous ces retours !
[^] # Re: Inscrit!
Posté par MCMic (site web personnel) . Évalué à 2.
Bon, ben si je comprends bien le code publié du premier (je connais peu le python) il s'agissait d'une bête médiane :-/
J'ai essayé la moyenne, j'ai vu que c'était pas ça, j'ai pensé à la médiane mais ça me paraissait pas logique donc j'ai pas essayé, j'aurai dû…
# Inscription HS
Posté par oao . Évalué à 1.
Le formulaire s'affiche 2s puis je passe à la page des sponsors. Tout est en JS, rien à faire à la main. Frustrant.
[^] # Re: Inscription HS
Posté par oao . Évalué à 1. Dernière modification le 25 octobre 2012 à 18:22.
Le bon lien est en fait http://www.codingame.com/cg/#!challenge:3 cela saute la page du choix des entreprises, qui me semble bloquée.
EDIT: ah ben non, -1 internal error.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.