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.
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
- La page d'inscription au concours (416 clics)
- Les autres jeux d'IA pour s'entraîner (432 clics)
- Le site de CodinGame (217 clics)
- DLFP : Code vs Zombies, samedi 28 novembre 2015, concours de programmation en ligne sur 24 heures (133 clics)
# cool...
Posté par Nicolas Boulay (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 puyopuyo . É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 Maxime (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 jacobus77 . É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 Maxime (site web personnel) . Évalué à 5.
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 puyopuyo . É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 Maxime (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 puyopuyo . É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 Maxime (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 Thomas Lecavelier . É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 Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Programmation de bot - vaincre l'adversaire - champ sémantique limitatif
Posté par BAud (site web personnel) . Évalué à 6.
t'avais pas un cahier des charges ? Ça permettrait de suggérer des épreuves concrètes :D
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10. Dernière modification le 26 avril 2016 à 20:12.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Programmation de bot - vaincre l'adversaire - champ sémantique limitatif
Posté par barmic . Évalué à 7.
Désolé, mais c'était trop tentant :)
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
# Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par Nicolas Boulay (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é"
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par barmic . Évalué à 3.
Je connais pas le domaine, ça ne vient de génération de code ?
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par Nicolas Boulay (site web personnel) . Évalué à 3.
Je ne comprends pas la question :)
"La première sécurité est la liberté"
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par barmic . Évalué à 4.
Excuse-moi je suis aller très vite dans mon commentaire…
Les 50k SLOC ça ne venait pas d'un outil qui génère le code à partir d'un automate par exemple ?
Ça ne change pas la qualité du travail ça remet juste en cause le nombre de SLOC comme métrique.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
Vu le niveau de l'AI, cela m'étonnerait que cela soit issue d'un simple automate.
"La première sécurité est la liberté"
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par Kerro . Évalué à 2.
D'un autre côté, 50000 lignes « de bonne qualité » c'est improbable en moins d'un an.
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par Maxime (site web personnel) . Évalué à 5.
Je ne sais pas de quel challenge il s'agit mais je doute qu'un candidat ait produit une solution de 50 000 lignes. Je suis même pas sûr qu'on accepte des programmes aussi longs (généralement je vois plutôt des solutions de l'ordre de 1000/1500 lignes pour les meilleurs). Peut-être 50 000 caractères ?
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par mayweed . Évalué à 1.
Maxime: La limite c'est pas 100k au niveau des caractères? il me semble que Jeff06 l'évoquait dans un de ses commentaires en réponse au post de blog sur sa stratégie lors du précédent contest…
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par Maxime (site web personnel) . Évalué à 3.
C'est bien 100k. D'où mon étonnement pour les 50k lignes :).
[^] # Re: Classement différent : limiter la taille du code, pour limiter le temps à y consacrer
Posté par Nicolas Boulay (site web personnel) . Évalué à 3.
Bon, le gars a du pipoter.
N’empêche que cela ne change rien à la proposition de faire des catégories de logiciel par leur taille.
Le plus simple est de jouer sur le même plan que le benchmark suivant : https://benchmarksgame.alioth.debian.org/how-programs-are-measured.html un gzip du code sans les commentaires.
"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.