Concours de programmation CodinGame le 22 Février 2014

Posté par  (site web personnel) . Édité par ZeroHeure et Benoît Sibaud. Modéré par Ontologia. Licence CC By‑SA.
25
20
fév.
2014
Jeu

La prochaine édition de CodinGame, le challenge de code en ligne, aura lieu le samedi 22 Février 2014 à 18h (UTC+1).

Ragnarok

L'événement accueillera des développeurs du monde entier pour leur permettre de passer un bon moment, défier leurs pairs, gagner des prix ou entrer en contact avec des sociétés qui leur plaisent et qui recrutent.

Parmi les nouveautés sur la plate-forme :

  • Bash arrive parmi les langages disponibles.
  • Dart 1.1 et de nouvelles bibliothèques pour Perl ont été ajoutés.
  • Le thème de ce challenge est "Ragnarök", issu de la mythologie scandinave. Pour l'occasion, de nouveaux graphismes seront à l'honneur.

screenshot_ragnarok

  • Objectif du challenge : résoudre deux problèmes de programmation dans le langage de son choix parmi les 16 proposés (C/C++, Java, Javascript, PHP, Python, Python 3, Perl, Go, Dart, Scala, Haskell, Objective-C, Pascal, Ruby, Bash).
  • Durée moyenne de l'épreuve : 2h30.
  • Modalités de participation : c'est en ligne, c'est gratuit, et c'est anonyme pour ceux qui ne souhaitent pas communiquer leurs coordonnées.
  • L’environnement de développement proposé donne accès à un éditeur de code et un shell Bash, pour lancer son programme depuis le navigateur.
  • Comme d'habitude, le règlement prévoit que le code source des participants soit rendu public sous licence libre GPL v3 et affiché sur le site dès la fin du concours, pour que tout le monde puisse apprendre et progresser en consultant les solutions des autres.

Aller plus loin

  • # langages

    Posté par  . Évalué à 9.

    La dernière fois, j'ai vu la news trop tard mais le sujet avait l'air assez génial.

    Cette fois ci, je suis presque motivé à y participer, mais mon langage de prédilection, Ocaml, n'est pas disponible :'(. Pour un concour français, c'est un comble !

    Bon, je peux toujours me rabattre sur scala, ou haskell, ou même dans le pire des cas, go mais pour ce genre projet on se sent toujours beaucoup plus à l'aise dans le langage qu'on maitrise le mieux.

    • [^] # Re: langages

      Posté par  . Évalué à 4.

      Je serais moi aussi heureux de pouvoir utilisé OCaml !

      Difficulté technique pour le mettre en place, ou manque de demandes des utilisateurs ?

      • [^] # Re: langages

        Posté par  (site web personnel) . Évalué à 8. Dernière modification le 20 février 2014 à 12:46.

        OCaml, c'est noté :-)
        C'est plus en fonction des demandes que de la difficulté d'ajouter un nouveau langage (enfin, dans la théorie c'est pas très difficile, dans la pratique, comme toujours on a des surprises).

  • # Et la fac ?

    Posté par  . Évalué à 5.

    Ça fait un moment que je me pose la question mais vous avez déjà pensé en discuter avec des facs ?

    Je suis prof à la fac et j'y fais entre autre des tps de programmation et franchement avec quelque chose comme ça je pense qu'on arriverai à faire des trucs plus fun pour les étudiants.

    • [^] # Re: Et la fac ?

      Posté par  . Évalué à 4.

      Bonjour Geo,
      On est effectivement en contact avec plusieurs universités et écoles et d'ailleurs, on hoste depuis peu (gratuitement, cela va sans dire) des challenges pour le milieu universitaire sur notre plate-forme. Assez simplement, on réserve un slot sur nos serveurs et sur le site pour créer une page de contest. On met aussi à disposition des étudiants / enseignants motivés notre éditeur de questions pour qu'ils puissent créer leur challenge sur mesure.
      Si vous êtes intéressés, vous pouvez nous contacter directement : contact [at] codingame.com.

      • [^] # Re: Et la fac ?

        Posté par  . Évalué à 1.

        On est effectivement en contact avec plusieurs universités et écoles et d'ailleurs, on héberge depuis peu (…) des événements (concours/défis barrez la mention inutile) pour le … Assez simplement, on réserve une entrée sur nos serveurs et sur le site pour créer une page de concours. On met aussi à disposition des étudiants/enseignants motivés notre éditeur de questions pour qu'ils puissent créer leur défi sur mesure.

        In fact, we have some university and schools contacts and we hébergeons since shortly… somme défis for académias. …

        Autant en français, il est très simple de donner un mot pour chaque chose (il y a pléthore de synonymes), autant si on écrit en anglais, ça le fait pas de mettre des mots en français…"Isn't it?" "N'est-il pas? (accent british inside na).

        Alors, je ne doute pas de vos capacités, et surtout pas celle de la langue, car je remarque qu'il y a sûrement moins de fautes de français que pour mon texte, mais s'il vous plaît, ne faites pas un mélange.

        Certes, de nombreuses personnes parlent les 2 langues, surtout ici. Ne généralisons pas non plus, je ne suis pas français, bien des peuples parlent cette langue, alors, de grâce, ne la gâchez pas.

        Amicalement

  • # Encore le samedi

    Posté par  . Évalué à 6.

    J'avais l'habitude de les faire avec des collegue quand c'était en semaine mais il faut avouer que le samedi, en plus a 18 heures, c'est vraiment la pire horraire pour se libérer, même en ayant peu de vie sociale. C'est pile l'heure ou il est impossible de prévoir quelque chose l'après midi ou le soir, en gros il faut réserver tout un samedi pour 3 heure de coding game juste parce que c'est très mal placé (sans compter les gens qui ont une famille qui ne vont pas diner à 23h). Bon cela dit il me semble avoir vu passé des sondages donc j'imagine que c'est choisi en fonction des réponses des gens. Je me demande quand même si vous toucheriez pas plus de monde à un autre horraire.

    • [^] # Re: Encore le samedi

      Posté par  . Évalué à 1.

      En effet, le samedi en fin d'après-midi peut paraître compliqué, mais ce n'est pas évident de satisfaire tout le monde en fonction des différents fuseaux horaires… Avec 70 pays, ça devient un vrai casse-tête. Si on décale le concours en semaine en soirée, ça pose alors des problèmes pour le continent américain notamment, où les participants ne peuvent pas toujours se libérer un jour ouvré. Partant de là, on s'est calés sur des créneaux type Code Jam ou ACM, le samedi donc.

      • [^] # Re: Encore le samedi

        Posté par  (site web personnel) . Évalué à 4.

        Moi ce qui m'embête c'est la durée du truc. À moins d'être une grosse brute, il faut prévoir au moins 3h, voir plus. La dernière fois on avait jusqu'à 5h !!! (alors que c'était annoncé 4h il me semble). Résultat, j'avais un truc qui passait à 80% au bout de 2h30 mais j'ai continué à améliorer pendant 1h de plus pour passer à 90% et je sais que si j'avais continué encore 1h, j'aurais fait 100%. Sauf qu'à côté j'ai ma copine qui commençait à avoir faim.

        Tout ça pour dire que : si le truc dure 2 ou 3h alors c'est raisonnable, on peut le faire à fond jusqu'au bout. Alors qu'avec plus de temps, on peut se faire battre par des no-lifes qui peuvent se permettre de coder 5h un samedi soir. Donc s'il vous plait, soyez raisonnable sur les durées max. Même si on peut faire en moins de temps, au bout d'un moment faut dire stop.

        • [^] # Re: Encore le samedi

          Posté par  (site web personnel) . Évalué à 1.

          Bonjour Maxime,

          Je suis d'accord avec vous : c'est injuste de lutter contre des no-lifes ;-)
          Je pense que Ragnarok prendra entre 1h30 et 2h30 pour grande majorité des participants. A moins que nous changions d'avis à la dernière minute (ce qui arrive quand même assez souvent…), la durée max. sera de 3h.

          • [^] # Re: Encore le samedi

            Posté par  (site web personnel) . Évalué à 2.

            Parfait la longueur ;)

            • [^] # Re: Encore le samedi

              Posté par  (site web personnel) . Évalué à 2.

              Cool :-) Vous avez trouvé les exercices sympas ?

              • [^] # Re: Encore le samedi

                Posté par  (site web personnel) . Évalué à 2.

                Ouais c'était plutôt sympa. Par contre j'ai perdu du temps en faisant maj + scroll down en voulant sélectionner mon code. Firefox a changé de page, puis l'IDE était complètement perdu. J'ai du retrouver le lien dans le mail pour relancer l'IDE proprement et j'ai perdu 10mn de code.

                Ma stratégie est vraiment bidon, j'ai voulu l'améliorer pendant 20mn mais ça donnait pas mieux sur les tests du coup j'ai tout reverté. Pour gérer les derniers tests, il m'aurait fallu un vrai algo je pense. Je sais comment faire mais flemme :). J'ai finalement soumis tel quel, j'ai fait 85% ce qui n'est pas trop mal. Mon objectif c'est juste d'être dans le top50, on verra bien.

                Enfin, ma copine voulait pas s'ennuyer pendant ma participation du coup elle s'est inscrite… Et c'est moi maintenant qui doit attendre qu'elle finisse pour qu'on puisse enfin manger :/.

          • [^] # Re: Encore le samedi

            Posté par  (site web personnel) . Évalué à 1.

            Bon, je pensais faire le concours mais on m'a proposé d'aller au resto revoir un vieux pote. Et comme je ne suis pas encore complètement nolife, j'ai accepté :)

            C'est con, parce qu'en 20 minutes de code, j'en avais déjà fait beaucoup.

            Une idée pour le prochain concours : Est-ce qu'il serait possible de le faire de durée fixe (3h était très bien) mais à départ glissant ?

            Une fois qu'on a commencé le concours et pris connaissance du sujet, on a 3h pour le terminer. Par contre, on le commence quand on veut dans un intervalle de 24h. Ça permettrait à tout le monde de s'organiser au mieux pour se libérer 3h, tout en gardant une durée limitée.

            Ha, et puis mon éditeur de texte est vachement mieux que le votre et mon firefox a du mal quand il y a trop de javascript. Est-ce que c'est envisageable d'avoir une API pour soumettre son code (tout en gardant la partie exécution de votre coté) ?

            Matthieu Gautier|irc:starmad

            • [^] # Re: Encore le samedi

              Posté par  . Évalué à 2.

              À mon avis pour les 3 heures glissantes c'est une très mauvaise idée, car qqun de mal intentionné se créé deux comptes : le premier bidon, il bosse 3h00 dessus, ensuite pause café, puis utilisation du deuxième code, soumission en 10minutes (pour rester crédible), et hop, victoire !

              bépo powered

              • [^] # Re: Encore le samedi

                Posté par  (site web personnel) . Évalué à 1.

                Oui, enfin, aujourd'hui rien n'empêche un groupe de travailler à 5 sur le sujet en même temps.

                Je ne sais pas quelles sont les priorité de CodingGame.

                • Si le but c'est de faire un vrai concours de programmation pour classer les dev dans le but de simplifier la vie des RH des boites d'info, alors effectivement, les 3h glissantes ne sont pas une bonne chose mais le faire sur le net non plus.
                • Si le but c'est de faire un concours et que le plus de gens y participe, effectivement avoir un IDE web est pas une mauvaise idée et faire 3h glissantes améliore les choses (au risque que deux mecs puissent tricher plus facilement, mais est-ce important)

                Matthieu Gautier|irc:starmad

                • [^] # Re: Encore le samedi

                  Posté par  . Évalué à 1.

                  Actuellement, même si tu triche à 5, tu vas mettre du temps pour écrire le code, donc tu finira dans les meilleurs, mais pas premier. Si tu fait du multi-compte, avec heure glissante, tu peux terminer premier sans trop de difficultés. Vu qu'il y a quelques lots intéressants, je trouverai malhonnête qu'on puisse les obtenir si facilement.

                  bépo powered

            • [^] # Re: Encore le samedi

              Posté par  (site web personnel) . Évalué à 4.

              Ha, et puis mon éditeur de texte est vachement mieux que le votre et mon firefox a du mal quand il y a trop de javascript. Est-ce que c'est envisageable d'avoir une API pour soumettre son code (tout en gardant la partie exécution de votre coté) ?
              

              Nous sommes en train de réfléchir à cette question. Une des pistes serait de créer des dépots gits pour les questions et de "pusher" sur les dépots pour tester son code. Cela permettrait d'avoir une solution qui marche avec tous les IDE. Mais c'est juste une idée à ce stade.
              En même temps, nous sommes très attaché à l'aspect IDE en ligne, car un des objectifs, c'est de passer un moment convivial, sans prise de tête de configuration de son environnement de développement, même pour les débutants. On continue la réflexion pour essayer de s'améliorer là dessus.

              En ce qui concerne l'heure de départ glissante, c'est assez problématique pour des questions de triches. On ne le pensait pas au départ, mais il y en a bel et bien. Nous avons un système maison pour détecter à la fin du concours les parties de code qui ont été dupliqué, et on a de drôles de surprises :) Bon, évidemment et heureusement, ce n'est qu'une petite minorité de personnes.

              Mais en règle générale, la problématique du temps est compliquée à gérer. On est obligé de faire cela le Samedi car il faut un moment qui convient à toutes les Timezones (C'est sûr qu'un soir de semaine pourrait être plus sympa). On a toujours pas trouvé la réponse, mais on continue de chercher : challenge de 24h ? (un peu plus inéquitable pour les lève-tôt ou suivant sa timezone), plusieurs questions par timezones ?(demande beaucoup de travail pour fabriquer toutes les questions)… Mais si vous avez des idées, on est plus que preneurs :)

              Merci énormément pour les retours en tout cas (adressé à tous les développeurs derrière les commentaires positifs ou négatifs)

  • # hâte de voir les implémentations en bash

    Posté par  . Évalué à 3.

    je suis un gros utilisateur de ce langage mais pas pour de l'algorithmie
    pour ma part, si j'y fais un saut, je tenterai ma chance en python.

  • # langage oublié

    Posté par  . Évalué à 2.

    décidément le langage Ada est au programmeur, ce que linux est au rayon informatique de la Fnac.

    • [^] # Re: langage oublié

      Posté par  (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 24 février 2014 à 10:27.

      De toutes façons, ce serait difficile de coder les exos en Ada très rapidement, la rapidité d'écriture n'étant pas prévue dans le langage :)
      En tout cas, je pense pas que l'intégration du langage soit compliqué dans la plateforme, ça reste un frontend GCC.

      • [^] # Re: langage oublié

        Posté par  (site web personnel) . Évalué à 1.

        la rapidité d'écriture n'étant pas prévue dans le langage :)

        L'écriture ça va, c'est la ré-écriture pour mettre les ; au bon endroit et trouver quels packages inclure.
        Compter 1/2 journée pour un « hello world ; », ça s'améliore ensuite (le compilo le rappelle toujours). Je force le trait, c'est un langage très puissant (il est assez simple d'appeler de l'assembleur directement par exemple, ce que j'avais trouvé inattendu), mais un peu pénible tout de même…

        • [^] # Re: langage oublié

          Posté par  (site web personnel, Mastodon) . Évalué à 3.

          trouver quels packages inclure.

          Ca, c'est comme pour toute API, sans IDE qui propose la complétion, il faut la connaître sur le bout des doigts.

          Compter 1/2 journée pour un « hello world ; »

          Oui mais enfin dans le cadre d'un coding game, faut pas s'amuser à prendre un langage qu'on connait pas :D
          Ceci dit, c'est un langage qui peut paraître pénible mais perso, j'ai trouvé que l'investissement valait le coup.
          Du coup, maintenant, je suis particulièrement désemparé quand je tombe sur un bug dans d'autres langages où le compilo Ada m'aurait aidé. Au final, c'est un langage d'assisté :D

  • # Résultat

    Posté par  . Évalué à 3.

    Bon alors, comment vous vous en êtes sortis ?

    Pour moi, c'est 75% de réussite (je bloque au moment où il y a beaucoup de géant d'un coup).
    Ma stratégie initiale a été de me dirigé vers le géant le plus proche. Ensuite je me suis dirigé vers le barycentre des géants, et utiliser mon marteau dès que je suis à portée. Dans un troisième temps, j'ai voulu, mais n'ai pas pu faute de temps, me diriger vers le barycentre des géants, et fuir si je n'ai qu'un géant à portée de marteau dans la direction opposé.
    Je n'avais bêtement pas fait les exercices d'entrainements, et en plus je n'avais pas mangé (je suis actuellement en hypoglycémie, ce qui n'est pas très malin), et m'a fait perdre du temps. Mais en tout cas, le principe est vraiment super, j'ai passé un très bon moment.

    PS : Y a-t-il un moyen de continuer à modifier son code pour voir si j'arrive à l'améliorer, même si évidement les modifications ne seront pas prisent en compte dans le cadre du concours.
    PPS : Avoir appris la frappe en aveugle (en bépo) l'an dernier a été un vrai bonheur pour moi durant ce challenge !

    bépo powered

    • [^] # Re: Résultat

      Posté par  (site web personnel) . Évalué à 4.

      Content d'entendre que ça a été un bon moment (dommage que freenode.net ait été victime d'une attaque DDoS juste pendant le concours mais bon, on n'y peut rien). De mon côté, ma "stratégie" a été en gros la suivante : je fuis de manière aléatoire tout le temps jusqu'à ce que je n'ai plus d'autre solution que le strike. Finalement ça marche pas si mal que ça (score entre 85% et 100%) sauf que les deux derniers tests ne passent que très rarement.

      Nous sommes en train de mettre à jour le training avec les exercices de ce concours.

      • [^] # Re: Résultat

        Posté par  . Évalué à 3. Dernière modification le 22 février 2014 à 22:05.

        95% pour moi, je suis satisfait. J'aurais peut-être pu passer le dernier test, mais j'avais faim.

        J'avais un peu regardé quelques concours précédents (un ou deux en début d'année dernière, si je me souviens bien), et j'avais galéré, ne serait-ce que pour passer quelques tests.
        J'ai trouvé l'épreuve bien plus simple que ce que j'avais vu précédemment (ce n'est pas une critique, loin de là), et surtout vraiment bien fichue.
        Les tests s'enchaînent bien, et amènent de la complexité petit à petit, un bonheur !

        J'ai juste eu un petit souci avec l'IDE, le copier-coller en sélectionnant et en cliquant avec la molette ne marche pas ? J'ai été obligé de passer par du clic-droit copier/coller.

        Edit:
        Ah oui côté stratégie, j'ai commencé par aller vers le barycentre des géants et à taper quand j'étais à porté. Ça ne marche plus bien quand il y a trop de géants, et donc dans ce cas, je vais vers le barycentre et j'essaie de bouger pour gagner du temps et attendre de ne pas avoir le choix pour taper.
        Pour les deux derniers tests, j'ai tenté de détecter les cas où les géants sont alignés pour les contourner (au lieu de foncer bêtement dans le tas). Ça marche un peu, mais pas trop comme même.

    • [^] # Re: Résultat

      Posté par  . Évalué à 4.

      100% avec une stratégie très simple :

      • si aucun géant ne menace de me tuer, je ne bouge pas ;
      • si un géant me menace,
        • si je peux tuer au moins (nombre de géants / nombre de coups disponibles) en un seul coup, je frappe,
        • sinon, je me déplace vers une case sur laquelle je ne suis pas menacé au tour suivant.

      Pour choisir la direction vers laquelle se déplacer, je cherche à aller vers le centre du terrain, de façon à éviter que Thor ne se coince tout seul dans un coin. Donc je cherche d’abord vers le nord si je suis dans la partie sud, et vice versa ; et d’abord vers l’est si je suis dans la partie ouest, et vice versa.

      Voilà, j’ai surtout joué pour m’exercer en Java, vu qu’aucune des entreprises n’est près de chez moi. J’ai été surpris de mon résultat (troisième \o/) vu que je me suis vraiment pas trouvé rapide, mais c’est parfait : j’ai déjà une petite collection d’échiquiers :-)

      Note pour la prochaine fois : « améliorer » le code (commentaires, etc.) à la fin n’est pas une bonne idée, j’ai failli « réussir » à passer derrière le quatrième.

      Je suis aussi étonné de voir qu’il n’y a que 13 personnes à 100%. Les autres ont peut-être cherché des stratégies trop compliquées.

      • [^] # Re: Résultat

        Posté par  . Évalué à 3.

        Je suis aussi étonné de voir qu’il n’y a que 13 personnes à 100%. Les autres ont peut-être cherché des stratégies trop compliquées.

        C'est effectivement quelque chose que j'ai compris dans les concours de robotique : plus c'est simple, mieux ça marche ! En tout cas ta solution est vraiment géniale.

        bépo powered

  • # 1ere participation

    Posté par  . Évalué à 3.

    Pour ma part c'est la 1ère fois que je participe à un défi, et je suis content car j'ai obtenu 95% (pseudo LouJo).

    J'ai passé du temps à chercher comment passer le dernier test des monstres en ligne avec un seul coup, imaginant un déplacement sur les cases possibles à coup de barycentre des monstres, total des distances, plus petite et plus grande distances. Or j'ai remarqué sur les gagnants qu'il aurait suffit que je commence par attendre au lieu de bouger tout de suite et ce serait passé.

    En tous cas j'aime bien cet esprit que ce n'est pas forcément en faisant un algo compliqué qu'on gagne, mais plutôt dans la simplicité maximale.

    J'ai bien aimé l'interface et les graphismes, avec un petit bémol : les monstres trop gros empêchaient de voir clairement les positions sur le terrain, même si les ombres aidaient un peu.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.