Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Code Hunt, le jeu de Microsoft Resarch qui vous apprend à programmer
à travers différents puzzles

Le , par Arsene Newman

0PARTAGES

5  0 
Microsoft Resarch a annoncé ce 15 mai le lancement de Code Hunt, un jeu en ligne pour toute personne intéressée par la programmation informatique et qui souhaite en apprendre davantage d'une manière facile et amusante.

Le jeu se présente sous forme de puzzles à résoudre où le joueur doit écrire le code source permettant d'arriver au résultat escompté et donc de passer au puzzle suivant. Autre aspect important de la programmation informatique qui est repris dans Code Hunt : l'optimisation de la solution. En effet, un code optimisé permet au joueur de gagner plus de points.

De son côté, Microsoft a annoncé : « Aujourd'hui nous sommes heureux d'annoncer le lancement de Code Hunt, un jeu sur navigateur web pour quiconque intéressé par la programmation. Nous avons créé Code Hunt pour profiter du fait que toute tâche peut être plus efficace et plus durable quand cela est amusant ».

Ce projet a été mené à bien grâce à deux ingénieurs de Microsoft Research, Nikolai Tillmann et Peli de Halleux. Il est basé sur une précédente expérience, Pex4Fun, et sur la technologie Pex : l'implémentation Microsoft de l’exécution symbolique dynamique, qui permet d'analyser un programme et de déterminer l'impact de chaque entrée sur l’exécution du programme. Quant à la plateforme utilisée, il s'agit du cloud Microsoft Azure. Ce choix est dicté par la facilité du passage à l'échelle de la plateforme.

Par ailleurs, les chercheurs ont publié un papier pour expliquer l'approche utilisée. Ils présentent alors Code Hunt comme « un puzzle que les joueurs doivent explorer à l'aide d'indices présentés comme des cas de test. Les joueurs modifient leur code de manière itérative pour le faire correspondre au comportement fonctionnel des solutions secrètes ».

Enfin, il est à noter qu'à l'heure actuelle le jeu ne propose que deux langages de programmation : C# et Java. Mais il ne serait pas étonnant qu'il s’enrichisse d'autres langages dans un futur proche.

Source : blog.msdn.com

Et vous ?

Qu’en pensez-vous ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Delioneras
Membre régulier https://www.developpez.com
Le 23/05/2014 à 9:49
J'aime bien le concept du jeu, mais le moteur de calcul est débile.

01.10, il me pose le problème suivant
Code : Sélectionner tout
1
2
3
4
5
6
using System;
public class Program {
    public static int Puzzle(int x, int y) {
        return 0;
    }
}
Avec dans le tableau de résultats:
X = 1, Y = 1, Expected = 1, Your Result = 0, Mismatch
X = 2, Y = 2, Expected = 2, Your Result = 0, Mismatch

Réponse de ma part
Code : Sélectionner tout
1
2
3
4
5
6
using System;
public class Program {
    public static int Puzzle(int x, int y) {
        return x;
    }
}
Ce qui répond au problème
Et là, il me sort "Wrong answer"
Et il affiche le tableau
X = 1, Y = 1, Expected = 1, Your Result = 1, Check
X = 2, Y = 2, Expected = 2, Your Result = 1, Check
X=2, Y = 65, Expected = 23, Your Result = 2, Mismatch

C'est complètement idiot, et certainement pas fait pour apprendre à coder.
Apprendre à conceptualiser et résoudre des équations, je veux bien, mais développer sûrement pas.

Ou alors si, à développer avec un client de mauvaise foi.

Client: Mais ça marche pas votre truc, ça fait pas ce que je demande.
Dev: Mais si, regardez, c'est sur le cahier des charges.
Client: Mais il est pas bon votre cahier des charges, l'appli doit faire ça.
Dev: C'est VOTRE cahier des charges, et votre besoin là, il est pas noté.
Comment on peut résoudre un problème dont on n'a pas toutes les problématiques ? C'est idiot, et donc, pas au point.

Je peux comprendre que ma solution proposée soit pas la bonne, très clairement.
Mais que l'énoncé soit pas complet dès le départ, ça biaise le truc.


- Choisis un nombre entre 1 et 10
- Bah 7
- Raté, c'était 15
7  0 
Avatar de Etanne
Membre éclairé https://www.developpez.com
Le 23/05/2014 à 23:42
Code : Sélectionner tout
1
2
3
public static bool Puzzle(int a, int b, int c) {         
		return (Math.Pow(Math.Min(a,b),2)==(Math.Max(a,b)+c)*(Math.Abs(c-Math.Max(a,b))))?true:false;
    }
"You wrote elegant code!"

Plus le code est court (sans { } !!) plus il est élégant.. ..merci Microsoft de nous montrer les bonnes manières.
2  0 
Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 25/05/2014 à 14:08
Citation Envoyé par miky55 Voir le message
si j'oublie de mettre une condition d’arrêt dans une boucle récursive, je risque d'avoir un stcak overflow, mais ça n'est pas obligatoire peut être qu'une autre exception va être levée avant (comme une division par zéro).
Là tu chipotes... Oui, bien sûr, une autre exception peut se produire avant ; mais s'il n'y a pas d'erreur, ni de condition d'arrêt, ça finira par une stackoverflow. D'ailleurs, même sans erreur et avec une condition d'arrêt, tu peux avoir une stackoverflow. Exemple classique : le calcul récursif d'une factorielle. Tu n'arriveras jamais à calculer la factorielle de 1000000 de cette manière, tu auras un stackoverflow avant (même en supposant que tu utilises un type de données qui supporte des valeurs aussi grandes)

D'autre part, la notion de "boucle récursive" n'a pas vraiment de sens...

Citation Envoyé par miky55 Voir le message
De la meme manière une boucle while qui ne remplit jamais sa condition et qui recourt à la pile pourra lever un stack overflow.
Qu'entends-tu par "recourir à la pile" ? La pile contient les paramètres et les variables locales pour chaque appel de méthode ; le nombre de paramètres et de variables locales ne change pas, donc tant que tu n'appelles pas d'autres méthodes, tu ne recourt pas à la pile. Je serais curieux de voir un exemple d'une boucle while qui déclenche une stackoverflow (et qui n'appelle pas de méthode récursive, évidemment, parce que dans ce cas ce serait la récursion qui causerait la stackoverflow et non la boucle)

Citation Envoyé par miky55 Voir le message
Bref tu mélanges un concept théorique qu'est une boucle infinie et une cause technique relative à la limitation physique d'un pc...
En l'occurrence ce n'est pas une limitation physique à proprement parler (même si la limite physique théorique existe en effet, vu qu'on a pas encore inventé la RAM infinie), mais plutôt une limite arbitraire imposée par le système (en .NET c'est 1Mo par thread pour la pile)

Une boucle infinie, sauf cas particulier, peut tourner indéfiniment quelles que soient les limitations de la pile ; une récursion infinie pourrait effectivement marcher en théorie s'il n'y avait pas de limitation de la pile, mais ça ne change rien au problème : on vit dans un monde réel avec des limites réelles, pas dans un monde imaginaire où tout est permis...

Donc je maintiens que c'est plutôt toi qui mélanges récursion et itération... Je vois pas quoi te donner de plus comme argument, c'est juste pas la même chose. C'est comme si tu soutenais que tourner en rond dans un manège (boucle) est équivalent à creuser un puits (récursion) (oui je sais, l'analogie est un peu foireuse...)
2  0 
Avatar de Delioneras
Membre régulier https://www.developpez.com
Le 23/05/2014 à 11:39
Citation Envoyé par SQUAL Voir le message
Hello world,
Je n'ai pas fait encore tout les niveaux, mais pour la "débilité" du programme, pour la 01.10, il s'agit de trouver une relation entre x et y, donc ne retourner que x semble ne pas répondre à la consigne ...

Sinon, je trouve que c'est une bonne initiative et qu'il est normal que ca ne marche pas trés bien, ils ont du faire ca trés vite.
On est bien d'accord, ma solution était idiote.
Mais ma remarque est sur le fait de changer la consigne d'un exercice APRES que le joueur ait donné sa réponse.
Ce qui est aberrant en terme de développement (même si ça se fait souvent).

J'avais aussi proposé 2x-y comme solution à ce même puzzle, et ça a aussi été refusé.
1  0 
Avatar de aniceboole
Futur Membre du Club https://www.developpez.com
Le 23/05/2014 à 12:55
Code : Sélectionner tout
1
2
3
4
5
6
public class Program {
    public static int Puzzle(int x, int y) { 
        return x + y/3;
    }
}
1  0 
Avatar de 23JFK
Membre expérimenté https://www.developpez.com
Le 23/05/2014 à 17:34
Citation Envoyé par tomlev Voir le message
Peut-être parce que c'est une erreur de syntaxe (en C# en tous cas)

Pas en java, les deux sont permises.
1  0 
Avatar de temoanatini
Membre averti https://www.developpez.com
Le 22/05/2014 à 18:46
C'est marrant. Par contre, je dois être un peu débile, puisqu'après le tuto je bloque au niveau 1.6...
0  0 
Avatar de Sirus64
Membre éclairé https://www.developpez.com
Le 22/05/2014 à 20:56
Code : Sélectionner tout
1
2
3
4
5
6
using System;
public class Program {
         public static int Puzzle(int x) {
         return 4/x;
         }
}
0  0 
Avatar de Jarodd
Membre expérimenté https://www.developpez.com
Le 22/05/2014 à 21:29
Pareil

On passe 20mn à faire des +2 et *3, et paf on se retrouve de suite avec un calcul bien bizarre

Edit : je 'navais pas actualisé donc pas vu la réponse de Sirus.
0  0 
Avatar de 23JFK
Membre expérimenté https://www.developpez.com
Le 22/05/2014 à 23:57
Amusant... Au bout de 10 exercices du même type, on est largement en zone d'agacement. En sus, le programme balance des erreurs de syntaxe quand on fait int L[] plutôt que int[] L .
0  0