Smash The Code, concours d'intelligence artificielle, démarre le 30 avril 2016

33
26
avr.
2016
Jeu

Smash the Code sera le prochain concours de programmation d'intelligence artificielle organisé par CodinGame. L'événement se déroulera en ligne du samedi 30 avril 2016 à 18h (heure de Paris) au dimanche 8 mai 20h. La participation est gratuite et ouverte aux développeurs du monde entier.

Smash the Code est un jeu de type multijoueurs où les participants devront développer un bot capable de vaincre ses adversaires de manière autonome. Pendant les 8 jours du concours, il sera possible de modifier son code autant que souhaité pour améliorer sa stratégie (pas de limitations, pas d'obligations). Pour rassurer ceux qui n'auraient pas beaucoup de temps à consacrer à leur programme, sachez qu'on peut démarrer et s'amuser avec une solution minimale qui peut être codée en quelques minutes seulement.

Les participants pourront tenter de décrocher les lots offerts aux meilleurs du classement, et candidater pour des emplois ou des stages auprès des sociétés sponsors de l'évènement.

Illustration

La plate-forme

La plate-forme CodinGame supporte 25 langages de programmation (C/C++, C#, Java, Javascript, PHP, Python, Python 3, Perl, Go, Dart, Scala, Haskell, Objective-C, Pascal, Ruby, Bash, Groovy, Clojure, VB.NET, Lua, OCaml, F#, Swift et Rust). Pour participer, vous avez la possibilité d'utiliser l'IDE en ligne proposé ou de coder directement depuis votre environnement habituel.

Déroulement du concours

Concrètement, vous devrez réaliser un programme qui lit sur l'entrée standard les données relatives au tour de jeu et vous devez écrire votre action sur la sortie standard. Pour tester votre programme, vous avez la possibilité de faire des matchs contre notre bot par défaut ou contre les adversaires de votre choix. Dès que votre programme est capable de faire quelque chose, même très basique, vous pouvez l'envoyer dans l’arène ce qui vous permettra de vous situer par rapport aux autres. Vous pouvez renvoyer une nouvelle version de votre bot à tout moment donc il ne faut pas hésiter. Le classement final sera celui de l’arène, "gelée" à la fin du jeu.

Pour s'entraîner pour Smash The Code, nous vous conseillons d'essayer :

Aller plus loin

  • # cool...

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

    Je sens que cela va prendre du temps :)

    Est-ce que vous avez amélioré le debug ? Lors du dernier tournoi, j'aurais aimé pouvoir ajouter des étiquettes sur les cases de la carte. C'était assez difficile de rassembler autant d'informations de debug uniquement en mode texte.

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

    • [^] # Re: cool...

      Posté par  . Évalué à 2.

      généralement pour le débogage je m'arrange pour récupérer tout les données envoyées en entrée et je les rejoue localement. Quand la partie visuelle est nécessaire pour le débogage, Cela m'est aussi arrivé de faire une petite interface locale.

      Dans l’idéal ça serait d'avoir une documentation de l'interface graphique actuelle afin de pouvoir connecter ces outils de dev directement a l'interface.

    • [^] # Re: cool...

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

      Plusieurs utilisateurs nous ont demandé des fonctionnalités pour faciliter le debug et nous avons commencé à y réfléchir. La conclusion était que ça dépend pas mal du jeu à moins de faire un truc trop générique qui serait alors compliqué à expliquer et à utiliser…

      Donc pour l'instant il n'y a pas de véritable amélioration. Pour le contest qui démarre ce week-end, vous pourrez afficher un message texte en dessous de votre perso mais si vous avez beaucoup de debug à afficher il faudra le faire sur la sortie d'erreur comme d'habitude.

      Si jamais vous avez d'autres questions n'hésitez pas, je passe sur LinuxFr tous les jours ;).

      • [^] # Re: cool...

        Posté par  . Évalué à 3.

        Juste 2-3 questions, vu qu'on est sur linuxfr…
        Je me demande ce qu'il en est de la license du code produit par les participants, si c'est une licence non propriétaire je voudrais savoir quelles sont les modalités pour récupérer le code, sinon il y a a accés à un historique avec accés aux codes soumis pendant/aprés le concours ?
        Je vois ide direct dans le browser, ça tourne comment avec firefox sous linux ?
        Merci.

        • [^] # Re: cool...

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

          Le Participant accepte de manière irrévocable que toutes les solutions qu'il soumet à la plateforme CodinGame lors du Concours soient publiées sous licence GPL v3, et qu’elles puissent être mises à disposition de quiconque par CodinGame dès la fin du concours.

          source: https://www.codingame.com/rules

          En pratique, nous envoyons un lien par email vers une page de rapport contenant le dernier code source envoyé. Actuellement, seul l'auteur du code, les éventuelles entreprises où il a candidaté, et l'équipe CodinGame, pouvons y accéder.

          Pour ce qui est de l'IDE, nous avons un site web qui contient un éditeur de code. Lorsque le joueur appuie sur le bouton "play" ou "submit", le code est envoyé sur l'un de nos serveurs, il est alors compilé, exécuté et le résultat est ensuite renvoyé au client web. Idem pour l'auto-completion dans certains langages. Par exemple en java nous avons un eclipse qui tourne, qui reçoit le code source, fait l'auto-completion, et renvoie le résultat.

      • [^] # Re: cool...

        Posté par  . Évalué à 2.

        Pour faciliter le débogage, peut-être qu'il suffirait d'exposer un service qui reçoit ce que vous attendez actuellement sur la sortie standard et qui renvoie ce que vous envoyez actuellement sur l'entrée standard. Après ces donnée serait aussi envoyées à l'interface afin de maintenir l'interface synchronisée.

        Du coup ça vous épargne l’étape de compilation, jusqu'au moment ou l'utilisateur vous envois une version qu'il considère comme acceptable.

        Je ne sais pas si j'ai été très claire…

        • [^] # Re: cool...

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

          J'ai du mal à comprendre en fait… On a en gros deux types de jeux :
          - IN/OUT: le code nous envoie une solution et on compare à la solution attendue
          - Avec arbitre en solo ou multi. L'arbitre c'est un programme externe qui détermine si la solution est correcte et qui va ensuite créer un gros JSON pour la visualisation graphique.

          Le challenge repose sur le second type de jeu. Comment ta proposition pourrait s'intégrer à ce système ?

          • [^] # Re: cool...

            Posté par  . Évalué à 1.

            Dans tout les types de jeux l'interface de communication se fait par IN/OUT. Le but est donc de ne plus exécuter sur vos machines le code à déboguer mais de fournir un moyen de communiquer directement avec le serveur.

            Si on prend le cas d'un jeux à 4 participants actuellement vous faites tourner 4 programmes et tour à tour vous lisez et écrivez vers les entrées et sorties standards respectifs.

            Ce que je proposais c'est que pour le même cas seulement 3 programmes tournent sur vos serveurs et le 4eme (celui qui sera déboguer) tournera sur la machine du participant et lira et écrira les données vers un service qui vous aurez exposé.

            De cette manière :
            - vous n'avez pas a gérer l’intégration a l'IDE/langage : cela peut-être fait de différentes manières plus ou moins adaptées selon les langages
            - la personne souhaitant déboguer son application est libre d'utiliser ces outils favoris.

            si au passage vous mettez en place un service pour envoyer son code directement depuis sont environnement de développement, alors on se rapproche de la perfection :)

            J’espère avoir été un peu plus claire, mais si cela est nécessaire on peut se mettre en contact hors du forum afin d'en parler.

            • [^] # Re: cool...

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

              Techniquement cela nécessite beaucoup de modifications mais cela rejoint l'une des idées qu'on a en tête et qu'on aimerait mettre en place un jour (pas pour le debug mais les changements à faire sont similaires)… En l'état ce n'est pas trop possible malheureusement.

  • # La Tentation

    Posté par  . Évalué à 9.

    Han c'est mal! Faut que je m'occupe de ma femme et de mes enfants avant tout! Pauvre petit bot, il a besoin de moi… tu comprends chérie? Hey, il a pas autant de jouer que toi, égoïste de fruit de mes entrailles…

  • # Commentaire supprimé

    Posté par  . Évalué à -10.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Classement différent : limiter la taille du code, pour limiter le temps à y consacrer

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

    Un autre point : les classements. La derniers fois que j'ai joué, le premier avait annoncer un code de 50 000 lignes ! C'est totalement impossible à faire sans bosser dessus plusieurs heures par jour.

    Pourquoi ne pas faire un autre classement sur la taille du code par exemple ? En genre d'ELO par ligne de code. Cela permet de se casser la tête mais sur une taille limitée.

    On peut imaginer aussi des catégories, comme pour les démos. Le meilleurs en moins de 1000 lignes (calculé par l'outil SLOCCount, par exemple, ou une taille de fichier max une fois compressé par gzip)

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

Suivre le flux des commentaires

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