Journal Clash of Code - Feedback

Posté par (page perso) . Licence CC by-sa
Tags :
19
16
sept.
2015

Salut,

Pour ceux qui codent et qui ont un peu de temps de libre, j'aimerais bien avoir votre avis sur Clash of Code, un nouveau type de jeu qu'on a lancé récemment sur CodinGame. L'idée à l'origine c'était de trouver un format simple, pas prise de tête, qui permet de s'amuser sur des petits matchs de code (5 à 20 minutes) en Players vs. Players (2 à 8 joueurs max. sur une même partie). Les puzzles sont généralement faciles (surtout en mode SuperFast) et les modes de jeu auxquels on a pensé (et qui tournent actuellement) sont :
- Le Fastest (résoudre le puzzle le plus vite possible)
- Le Shortest (résoudre le puzzle avec le code le plus court)
- Le Reverse (résoudre le puzzle sans l'énoncé : on voit uniquement les jeux de tests en entrées et les résultats attendus en sortie et il faut en déduire la logique).

Pour ceux qui ont/vont tester, est-ce que vous trouvez ça sympa et quelles améliorations/évolutions/modes seraient bienvenus ?
A mon avis ça reste pas très accessible si on ne connait pas le mécanisme de lecture des jeux de test depuis STDIN et écriture du résultat sur STDOUT (comme sur tous les jeux CodinGame) mais bon… à vous de nous dire.
Le jeu est en bêta et on est ouvert à la critique, hein :-)

PS : C'est évidement gratuit mais pour tester il faut créer un compte. Oui je sais… mais c'était trop compliqué de faire autrement notamment parce que c'est des vrais joueurs (pas des bots), qu'il y a un classement etc.

  • # le but ?

    Posté par . Évalué à 2.

    Je n'ai toujours rien compris au sujet. Le lien ne me renseigne pas plus.

    On est obligé de faire parti d'un match pour avoir une idée de ce qu'il faut faire ?

    "La première sécurité est la liberté"

    • [^] # Re: le but ?

      Posté par (page perso) . Évalué à 2.

      Oui il faut jouer pour comprendre. Un tuto avec des bots est prévu pour plus tard.

      • [^] # Re: le but ?

        Posté par . Évalué à 2.

        Bon, j'ai tenté. C 'est des exo de programmation de 5 10 15 min. Cela se fait à plusieurs avec gagnant pour le plus rapide, ou le code le plus court. Autant, avoir le code le plus court en respectant des coding standard classique, c'est sympa, autant de jouer avec des variables d'une lettre, bof…

        "La première sécurité est la liberté"

  • # Code le plus court

    Posté par . Évalué à 3.

    C'est quelque chose qui date de plusieurs mois sur Coding Game, des points/challenges pour récompenser les bouts de code obfusqués avec un nombre de caractères tout petit. Honnêtement, je n'en vois pas l'intérêt, et il y a eu pas mal de critiques sur les forums du site, notamment parce que ce genre de bêtises rapportait beaucoup de points pour les classements.

    Je n'ai pas testé les clash of code, mais pour un retour général, j'aurais tendance à dire que je me suis un peu lassé de la répétitivité des algorithmes : les description des puzzles sont super diversifiées, on a des problèmes de labyrinthes, d'optimisation, de cryptographie, etc ; malheureusement, au niveau du code, on se retrouve presque toujours à faire du pathfinding ou du parcours d'arbre. Un autre problème repose sur les contraintes strictes au niveau du temps d'éxécution, qui encouragent souvent à tricher (en réalisant par exemple qu'on peut écarter a priori tout un tas de cas qui ne sont jamais dans les tests), ou qui reposent toujours sur les mêmes solutions (mémoïsation).

    Ce qui m'avait bien dégoûté, quand même, c'est le jeu "The great escape", qui était en fait un jeu de société déja connu, avec une littérature existante sur les stratégies optimales, voire des algorithmes de résolution déja publiés. Du coup, ce n'était pas un concours de programmation, mais un concours d'implémentation ou de bibliographie—pas très intéressant.

    • [^] # Re: Code le plus court

      Posté par (page perso) . Évalué à 4.

      Je comprends ton point mais le code golf plait beaucoup sur CodinGame (et pas que sur CG d'ailleurs : http://uk.businessinsider.com/code-golf-the-strange-sport-google-employees-play-2015-7?r=US&IR=T) ! Perso : je trouve ça vraiment fun et, toujours perso, ça m'a permit d'apprendre de bons hacks dans certains langages. Pour le calcul de ranking il y a eu pas mal d'updates depuis.
      Concernant The Great Escape c'est dommage que tu te sois arrêté à ça :/ A ma connaissance, les meilleures IA (parmi 2236) ne sortaient pas de bibliographies. Mais bon, chacun ses goûts :-)

      • [^] # Re: Code le plus court

        Posté par . Évalué à -1.

        Concernant The Great Escape c'est dommage que tu te sois arrêté à ça

        Bon, il y a aussi l'algorithme de classement qui était vraiment pourri (pas du tout adapté au principe de recommencer au bas de l'échelle à chaque tentative), je ne sais pas si ça a été corrigé depuis. Du coup, les gagnants sont surtout ceux qui ont posté leur solution en premier.

        Après, bien sûr, ce n'est pas catastrophique. Le truc, c'est qu'on peut passer un temps fou et à se prendre au jeu, et il faut derrière donner l'impression que tout est fait pour garantir une certaine équité entre les joueurs. Les petites boulettes ou imprécisions peuvent donc générer de la frustration ; quand même, ici, il s'agissait un "minimax" classique ; si la fonction d'évaluation traine sur les internets, le jeu a tout de suite moins d'intérêt. Visiblement, il s'agit d'un jeu assez populaire dans certains pays, donc les gens qui y ont joué gamins ont pu googler le vrai nom du jeu, tandis que les autres ont dû tout réinventer à partir de rien. C'est tout à fait possible que certaines solutions gagnantes soient originales (après tout, on ne parle pas non plus du jeu d'échecs), mais tout le monde ne partait pas avec les mêmes cartes, et ça s'est vu dans les classements.

        • [^] # Re: Code le plus court

          Posté par . Évalué à 2.

          J’ai participé à ce challenge et je l’ai bien aimé.
          Par ailleurs, la stratégie employée par le top 3 a été présenté quelque part et, si ma mémoire est bonne, aucun d’eux n’a utilisé un minimax.
          En ce qui me concerne, j’ai terminé dans le top 50 sans utilisé minimax non plus. Je ne connaissais pas ce jeu et j’ai donc dû trouver une solution « original ».
          Je ne trouve pas que l’algorithme de classement cloche : ce qui causait plutôt problème, à mon avis, est le délai avant d’obtenir son vrai classement.
          En tous cas, merci à Codingame pour tout. Je vais essayer les Clash of Code un de ces jours.

        • [^] # Re: Code le plus court

          Posté par (page perso) . Évalué à 5.

          (disclaimer: j'étais un participant à The Great Escape (27eme), j'ai maintenant rejoint CodinGame depuis peu mais je ne fais que donner mon point de vue personnel)

          Bon, il y a aussi l'algorithme de classement qui était vraiment pourri (pas du tout adapté au principe de recommencer au bas de l'échelle à chaque tentative), je ne sais pas si ça a été corrigé depuis.

          Il n'a pas changé, il n'est pas parfait, mais nous sommes également à l'écoute de propositions pour arranger la situation. Nous avons une piste en tête qui permettrait justement à ne pas faire recommencer en bas à chaque fois. Mais pour le prochain contest il n'est pas prévu de le changer normalement.

          En tant qu'ancien participant, je pense que "vraiment pourri" est exagéré. Et pour avoir fréquenté d'autres concours en multi, je n'ai jamais trouvé de solution permettant de classer correctement 2000 participants parfaitement.

          Du coup, les gagnants sont surtout ceux qui ont posté leur solution en premier.

          Ce n'est pas vrai, les gagnants sont des gens qui ont passé un temps fou dessus et qui ont continué à améliorer leur code jusqu'au dernier moment. Le gagnant cachait son bot pour ne le dévoiler qu'au tout dernier moment. Mais c'est vrai qu'il y a un léger biais et un facteur chance sur les premiers matchs.

          quand même, ici, il s'agissait un "minimax" classique ; si la fonction d'évaluation traine sur les internets, le jeu a tout de suite moins d'intérêt. Visiblement, il s'agit d'un jeu assez populaire dans certains pays, donc les gens qui y ont joué gamins ont pu googler le vrai nom du jeu, tandis que les autres ont dû tout réinventer à partir de rien.

          Je pense que c'est un peu exagéré, ce qu'on pouvait trouver sur internet ne permettait pas de finir dans le top10. J'avais lu plusieurs articles de recherche sur le sujet mais cela ne m'a pas aidé : soit les contraintes de temps n'avaient rien à voir, soit c'était du travail de master pas assez poussé. Je n'ai pas trouvé de fonction d'évaluation magique.

          • [^] # Re: Code le plus court

            Posté par . Évalué à 2.

            " Et pour avoir fréquenté d'autres concours en multi, je n'ai jamais trouvé de solution permettant de classer correctement 2000 participants parfaitement."

            Les algo type ELO, ne sont pas fait pour ça ?

            "La première sécurité est la liberté"

            • [^] # Re: Code le plus court

              Posté par (page perso) . Évalué à 4.

              J'avais participé à plusieurs reprises au Google AI Challenge et au début ils utilisaient ELO sauf qu'en fait les résultats n'étaient pas parfaits… Du coup ils sont passés sur du trueskill (qui partage des similarités). Et chez CodinGame on a fait le même choix.

              C'est pas une problématique facile, il y a pas mal de recherche sur le sujet.

              • [^] # Re: Code le plus court

                Posté par (page perso) . Évalué à 2.

                C'est pas une problématique facile, il y a pas mal de recherche sur le sujet.

                Je suppose que c'est comme dans la théorie des votes, où la méthode de vote a une influence parfois prépondérante sur les résultats du vote. Il n'y a guère que les confrontations entre deux possibilités dont l'issue est claire.

                • [^] # Re: Code le plus court

                  Posté par (page perso) . Évalué à 3.

                  Le problème c'est que certains codes sont meilleurs dans certaines configurations de jeu ce qui augmente fortement le nombre de parties nécessaires… C'est vraiment chaud, on fait de notre mieux et c'est déjà pas mal je trouve vu la difficulté.

                  • [^] # Re: Code le plus court

                    Posté par . Évalué à 3.

                    Cela me rappelle les parties à 2 ou 4, dont je ne me rappelle plus le titre. Mon IA était timide, cela la rendait très forte à 4, mais très faible à 2 car peu agressive.

                    "La première sécurité est la liberté"

  • # À qui profite le crime

    Posté par . Évalué à 6.

    Bonjour.

    En lisant les commentaires précédents je me suis rendu que CodinGame était en mesure au travers de ses jeux d'obtenir des solutions originales à des problèmes d'informatique classique, et peut-être (attention extrapolation) moins classique.

    De plus CodinGame propose un job-board (quelqu'un a-t-il un mot plus frenchie ?).

    Donc mes questions :
    - quelles assurances a-t-on que les profils ne sont pas vendus ?
    - les solutions trouvées pour les jeux ne pourraient-elles pas ne peuvent-elles pas être vendues ?
    - finalement de quoi vivent-ils ?

    P.S.: je n'ai pas créé de compte chez eux et n'ai pas cherché sur le forum.

    • [^] # Re: À qui profite le crime

      Posté par . Évalué à 2.

      [modif] j'ai trouvé les règles qui mentionnent ceci : Data Protection Act of 6 January 1978 ; mais ils ne disent pas qu'ils ne feront QU'un usage interne (ils disent qu'ils en font un usage interne) ; je n'ai pas regardé le texte référencé mais il peut être utile d'anticiper ce genre de question dans leur «faq» (je ne vais pas aller lire le document car je n'ai pas la tentation de participer à leurs jeux).

      P.S. : j'ai pas pu modifier le poste.

    • [^] # Re: À qui profite le crime

      Posté par (page perso) . Évalué à 0.

      Zut. On est démasqué. J'ai toujours dis à l'équipe que le coup de faire atterrir Opportunity sur Mars c'est trop gros… et que tôt ou tard, quelqu'un finirait par comprendre que c'était la NASA qui nous avait mandaté. Bein voilà, c'est fait.
      Plus sérieusement :-) De quoi vivons-nous ? De la mise en relation entre des développeurs à l'écoute d'opportunités et des entreprises qui souhaitent recruter des développeurs.

      P.S. : Tu as bien fait de ne pas créer de compte sur CodinGame, tous nos fichiers partent directs à la NSA ;-)

      • [^] # Re: À qui profite le crime

        Posté par . Évalué à 7.

        Sans porter de jugement sur la pertinence de ses interrogations, tu as une réponse sérieuse à y apporter ?

        Non, parce que l'humour c'est très bien, mais à te payer sa tronche comme tu le fais, je trouve que tu donne une image assez déplorable de ta boite. Smileys ou pas.

        • [^] # Re: À qui profite le crime

          Posté par . Évalué à 4.

          Je trouve qu'il a répondu assez sérieusement :

          De quoi vivons-nous ? De la mise en relation entre des développeurs à l'écoute d'opportunités et des entreprises qui souhaitent recruter des développeurs.

          • [^] # Re: À qui profite le crime

            Posté par . Évalué à 5.

            Il a surtout répondu partiellement. Trois question posées pour une réponse, ça laisse bien deux questions en suspend, non ?

            • [^] # Re: À qui profite le crime

              Posté par . Évalué à -1.

              Souvent, pour savoir à quelle sauce les utilisateurs sont mangés, il faut commencer par aller voir la partie du site à destination des entreprises.

              Ce qu'on trouve ici, c'est un système d'évaluation automatique du programmeur.

              Ce qu'on ne trouve pas (ou bien j'ai mal cherché) c'est le code source du système d'évaluation.

              On lit dans les commentaires plus bas que le système de classement est bien contestable.

              Le système d'évaluation automatique du programmeur qui est vendu au client est il lui aussi contestable ?

              En tous cas, Dassault est satisfait et c'est tant mieux pour les avions de chasse (non mais sans déconner, se vanter d'avoir Dassault comme client, faut pas avoir honte).

              • [^] # Re: À qui profite le crime

                Posté par (page perso) . Évalué à 5.

                En tous cas, Dassault est satisfait et c'est tant mieux pour les avions de chasse (non mais sans déconner, se vanter d'avoir Dassault comme client, faut pas avoir honte).

                Et confondre Dassault Aviation avec Dassault Systèmes, c'est pas la honte?

                Dassault Systèmes c'est Catia, SolidWorks etc…

                • [^] # [hs] Re: À qui profite le crime

                  Posté par . Évalué à 2.

                  Tu as raison ! Je n'ai pas fait la différence entre deux des possessions du groupe industriel Marcel Dassault que sont Dassault Aviation (50,5%) et Dassault Système (45%), créé par Avions Marcel Dassault-Breguet Aviation en 1981. Rien à voir, sinon que ce sont les mêmes.

                  Par ailleurs, ma référence à Dassault lui-même concernait Serge Dassault qui jusqu'à pas longtemps dirigé le groupe. Il a été condamné pour corruption (ce qui ne sera pas une surprise pour qui lit le Canard Enchainé), affirme que l'homosexualité est décadente et "juge « anormal » d'aider les chômeurs, « des gens qui ne veulent pas travailler »", pour reprendre ce qu'en dit wikipedia. Dans ses poches, les bénéfices de Dassault Systèmes.

    • [^] # Re: À qui profite le crime

      Posté par (page perso) . Évalué à 8.

      Je pense que Frédéric a répondu à la question principale mais pour compléter :

      • quelles assurances a-t-on que les profils ne sont pas vendus ?

      Je ne suis pas sûr de comprendre la question en fait. Les entreprises paient pour être présentes lors des contests ce qui permet aux participants de candidater. C'est aux utilisateurs du site de postuler sur une offre s'ils veulent être contactés par une entreprise.

      • les solutions trouvées pour les jeux ne pourraient-elles pas ne peuvent-elles pas être vendues ?

      D'une part cela me parait compliqué à revendre et surtout ce n'est pas notre objectif. Notons aussi que dans l'ancienne version du site, les codes sources des candidats étaient mis à disposition après le contest sous licence libre et que nous avons prévu de remettre en place cela dans le futur.

      • finalement de quoi vivent-ils ?

      En gros, il y a plusieurs services proposés :
      - visibilité lors de contests => les entreprises ne peuvent entrer en contact qu'avec les participants qui ont indiqué être intéressés.
      - achat de tests d'évaluation => en gros les candidats ont des questions techniques et l'entreprise reçoit une évaluation du candidat.
      - hackathons privés => par exemple pour faire du team building, nous faisons des contests privés.

      Le mieux c'est d'aller voir la partie orientée entreprise : https://www.codingame.com/work/

  • # Shortest

    Posté par . Évalué à 0.

    J'ai juste une question concernant le "Shortest". Est-ce qu'il prend en compte le nombre de caractères ou le nombre d'expressions (ou on pourrait imaginer le nombre de noeuds d'un arbre de syntaxe) ?

    (Je pose la question de manière malicieuse, je n'aime vraiment pas la première option qui n'est pas très friendly quand on veut faire du code lisible. :o)

    • [^] # Re: Shortest

      Posté par (page perso) . Évalué à 4.

      C'est le nombre de caractères et oui, cela rend le code illisible en général. Mais pour être bon en shortest, il faut maîtriser toutes les subtilités du langage et être imaginatif. À l'image des concours d' « obfuscation », les meilleurs codes ne sont surtout pas à reproduire dans un contexte pro :D. L'intérêt est purement ludique, pour le seul plaisir de claquer une ligne de code qui oblige à réfléchir.

      Après c'est sûr, on aimerait proposer d'autres métriques mais techniquement c'est plus compliqué à faire vu qu'on propose plus de 20 langages différents.

      • [^] # Re: Shortest

        Posté par . Évalué à 9.

        Dans le langage shoutout, ils ont une autre méthode : la taille d'un gzip. Ce qui évite de devoir utiliser des variables d'un seul caractère.

        "We start with the source-code markup you can see, remove comments, remove duplicate whitespace characters, and then apply minimum GZip compression. The Code-used measurement is the size in bytes of that GZip compressed source-code file.
        Thanks to Brian Hurt for the idea of using size of compressed source code instead of lines of code.
        (Note: There is some evidence that complexity metrics don't provide any more information than SLoC or LoC.)"

        https://benchmarksgame.alioth.debian.org/play.php

        "La première sécurité est la liberté"

        • [^] # Re: Shortest

          Posté par (page perso) . Évalué à 2.

          C'est intéressant mais est-ce vraiment utile la compression gzip sur des programmes qui font moins de 200 caractères ? On perdrait la possibilité d'afficher le score directement dans l'interface et ce serait un peu la surprise notre score. Bref, sur des clashs qui durent moins de 5mn je n'y crois pas trop. En revanche sur des programmes plus complexes, pourquoi pas.

          • [^] # Re: Shortest

            Posté par . Évalué à 5.

            gzip permet d'avoir la vrai "entropie" du code, à priori, c'est une façon simple d'avoir un nombre proportionnel au nombre d'instructions, et qui ne dépend pas trop des noms choisis pour les variables.

            "La première sécurité est la liberté"

            • [^] # Re: Shortest

              Posté par (page perso) . Évalué à 3.

              Je comprends bien, je me souviens de mes cours de master… Sur de gros programmes je trouve cela très pertinent mais j'ai des reserves sur l'intérêt sur des programmes où on utilise peu de variables. Je suis d'accord que l'indicateur est peut-être meilleur mais en contrepartie, on n'est plus capable d'afficher l'info au joueur en instantané et il ne sait pas trop ce qui va lui permettre de vraiment gagner en espace contrairement à l'unité simple du caractère.

              • [^] # Re: Shortest

                Posté par . Évalué à 3.

                on n'est plus capable d'afficher l'info au joueur en instantané

                Bah, à l'heure des sites webs ultra dynamiques, ça ne doit pas être très compliqué de fournir la taille en gzip d'un bout de code très court en temps réel.
                Je suppose même qu'on doit pouvoir trouver une lib qui ferait ça directement en javascript.

                Yth.

              • [^] # Re: Shortest

                Posté par . Évalué à 2.

                Si c'est la seule difficulté, il doit bien y avoir un gzip.js qqpart à mettre dans le navigateur.

                Sur le fond je suis d'accord que l'entropie est une meilleure métrique que le nombre de caractères.

                Cela dit entre un onliner avec des variables et une lettre et le même programme bien indenté et avec des variables explicites, gzip donnera quand même la gagne au onliner.

  • # Moi j'aime bien

    Posté par (page perso) . Évalué à 8.

    Voilà! Ca fait quelques fois que je joue, histoire de me détendre, c'est rigolo. Alors évidemment, ce serait bien aussi si les autres joueurs ne passaient pas leur temps à copier-coller leurs réponses, et moi-même je suis déjà tombé plusieurs fois sur le même challenge (sauf que j'avais pas sauvegardé ma réponse précédente), mais bon, il reste sa propre satisfaction à être deuxième en 1'10" juste derrière un opposant qui, lui, a fait 0'15" en écrivant du C…

    Et puis j'ai un collègue qui ne jure que par le Java contre mon Python, avec le "Shortest", je crois que j'ai gagné. Même si je déteste maintenant les programmeurs Ruby…

    La question a été posée sur le forum de quels modes pourraient voir le jour, et de mon côté, je trouvais les modes "Blind Code" et "Babylone" rigolos. Je verrais bien un mode variante de Babylone où le choix du langage est libre, mais les 3 langages les plus utilisés par le joueur (à partir des achievements de son profil) ne sont pas disponibles (en clair, t'as 10 minutes pour faire un hello world dans un langage que tu connais pas). Je dis ca, parce que j'ai bien aimé l'achievement "Closure Looper", qui m'a forcé à découvrir ce langage (que j'espère par ailleurs ne plus jamais avoir à utiliser ! :) ). Le langage utilisé pourrait alors être non disponible la fois suivante, ce qui permettrait de mettre les joueurs sur un pied d'égalité : ceux qui ne connaissent pas le challenge sélectionneront un langage qui n'est pas trop loin ce que qu'ils connaissent, les autres seront obligés de se tourner petit à petit vers des langages qu'ils avaient préféré écarter au départ.

    Le mode "Performance" qui après tout n'est pas plus ou moins bien loti que "Shortest" (Oui, le C a un avantage majeur, tout comme le Ruby l'a pour Shortest). Un mode "Fight" aussi peut être, un peu sur le mode de "The Great Escape": Les joueurs ont un temps donné pour coder une petite IA ou quelque chose de ce genre, à la fin du temps imparti, il y a un combat sur un plateau commun pour déterminer le classement.

    Et pour finir un mode en coopératif. Bon, là je sais pas trop ce qui pourrait marcher, et je sais pas trop comment expliquer, mais imaginons un challenge dérivé de Blender en recherche de son Suicide Booth, en simplifié probablement. Chaque joueur doit écrire un programme qui exécute une partie du challenge de telle sorte que le challenge est résolu en faisant communiquer tous ces programmes ensembles. On pourrait avoir par exemple un joueur qui recoit la map et qui doit dire en fonction du placement de Bender quel type de case il se trouve, un autre s'occuperait justement de proposer un déplacement valide en fonction de la nouvelle case sur laquelle Bender se trouve, un dernier s'occuperait de calculer la position du robot en fonction de la suite de déplacements, etc. Les joueurs absents peuvent être remplacés par un programme de référence. Pour le classement des joueurs, soit c'est du tout ou rien (en mode équipe), soit on peut pénaliser les programmes qui font des fautes dans leurs calculs, …

    Bref, je suis impatient de voir ce que CoC va devenir, et j'aurais probablement toujours plaisir à me détendre avec.

Suivre le flux des commentaires

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