[BattleDev 2018] L’événement que vous avez pu manquer

 

Salut à tous,

Le 27 mars dernier se tenait la "BattleDev", une forme de "Hackathon" ou plus simplement une compétition pour les développeurs.
Et l'un des avantages non négligeable de cet événement, était la possibilité de réaliser cette compétition de chez soi !

Je me suis donc installé avec la permission de mon entreprise dans les locaux de celle-ci pour être au calme avec un bon Hamburger de chez Lally's Burger (Petit coup de pub "gratuit" pour un bon restaurant pas loin de mon travail)

La compétition

3 ... 2 ... 1 ... Go !
Le top départ est lancé à 20h ... et l'épreuve doit durer maximum 2h
Les identifiants pour se connecter à la plateforme sont donné le jour même.
Les inscriptions sont à faire durant les mois / semaines qui précèdent l'événement et non pas à la dernière minute.

Il vous faudra à l'inscription choisir le langage de programmation de votre choix.
Me concernant j'ai opté pour le NodeJS !

Ensuite, lors de l'épreuve, vous devrez saisir votre code dans un éditeur et le valider ...
Tant que celui-ci ne passe pas les tests ... vous ne pourrez pas passer au niveau suivant.

Les spécificités

Habitué des plateformes de challenges comme :

Mathématique en veux-tu ?

Je m'attendais à voir des problématiques de "code" lié à la maîtrise / connaissance du langage, mais j'ai plutôt été confronté à des problèmes de mathématiques.

Envoi des valeurs sous la forme de variable ?

On aurait pu s'attendre à écrire du code dans une fonction se présentant ainsi :

/*
*	
*	Retourner la valeur de a + b
*/
function Challenge(a,b){
	return a + b;
}

Mais les données étaient envoyées "progressivement" ... dis comme ça c'est compliqué de comprendre, je vais donc "illustrer" :

L'exercice vous expliquera que les données seront envoyées sur l'entrée standard.
Par exemple :

La première donnée que vous recevrez sera le nombre de patient(s) d'un hôpital : 150
La deuxième donnée sera une liste des nom de maladie de ces patients  : "Cancer  Sida Rhume  Grippes"
Les X prochaines données (X correspondant au nombre de maladie seront les spécificités des maladie) 

En gros, tu te "démerde" pour savoir ce qu'ont t'envois, tu stockes  et après tu traites.

var input = []
function recoitLesDonnes(donnees){
	//input.push(donnees)
}


function challenge(){
	// j'utilise input
}


//Nombre de patient
recoitLesDonnees(150)
//Liste des maladies
recoitLesDonnees("Cancer Sida Grippe")
//nombe de malade, gravité de la maladie, soignable ?
recoitLesDonnees("20  grave false")
recoitLesDonnees("30  grave true")
recoitLesDonnees("100 moyen true")
//test du challenge
challenge();

 

Les divers problèmes rencontrés

Cette compétition avait prévu une charge d'environ 3200 personnes ....
Et pourtant ... pourtant ... je dirais que chaque personne à dû perdre entre 15 et 20 minutes (ou plus) avec :

  • Des déconnexions
  • Des erreurs SQL"Connection failed: SQLSTATE[HY000] [1040] Too many connections"
  • Des tests qui échouent de manière aléatoire, car le serveur étant chargé. Il y a régulièrement une erreur du genre "Infinity While or error in your code".
  • Beaucoup beaucoup trop de détails dans les énoncés exercices.
    Il aura fallu plusieurs relectures de l'énoncé et réécriture du code.

Ça ne veut pas dire que je n'ai pas aimé, c'était une première pour moi, et je pense que je me préparerais différemment pour la prochaine édition (oui oui j'y retourne mouahaha)

Quelques exercices pour le fun

 

Alors pour tout vous avouer, j'ai validé uniquement 3 exercices sur les 6.
Je vais vous synthétiser ici (de tête) les exercices (sans les détails superflus).

Calculer la moyenne du meilleur restaurant :
Vous recevez en entrée un nombre de restaurants, puis pour chacun des restaurants vous recevez 3 notes sur 20.

  • Une note sur la qualité de la cuisine
  • Une note sur la qualité de la salle
  • Une note sur la qualité du service

À vous de renvoyer la moyenne du meilleur restaurant (arrondit au supérieur).

Calculer la recette d'un restaurant:

Vous recevez en entrée le prix unitaire du buffet, ensuite le nombre de tables dans votre restaurant, et pour chaque table le nombre de couverts.
Une réduction de 10,20, 30% s'appliquera en fonction du nombre de personne sur une table de 4, 6, 10 personnes.
À vous de calculer la somme que devra encaissé le restaurant

 

Calculer la moyenne de la note que donneront vos meilleurs amis à "Rocky VI" :

Ici ça va se corser un peu.
Vous recevez la liste des notes que vous avez attribuée à :

  • Rocky I
  • Rocky II
  • Rocky III
  • Rocky IV
  • Rocky V

Vous recevez le nombre d'amis que vous avez, puis le nombre de "meilleurs" amis.
Pour chacun de vos amis, vous recevez la note qu'ils ont attribué chacun à chacun des films mais aussi celle pour "Rocky VI"
À vous de définir parmi vos amis, lesquels sont vos meilleurs amis, et faire une moyenne de la note qu'ils ont attribuée à "Rocky VI"

Combien de mouvement ?

J'ai une pile de crêpes, chacune à un diamètre différent.
Combien de changements "réels" (on oublie la crêpe qui est en 2ème position et que je place en 5ème) dois-je faire pour obtenir un pile de crêpes parfaite.

Conclusion

J'espère que ceux qui y ont participé ont passé eux aussi un bon moment.
J'ai fait ça tranquillement à ma boîte au calme avec un ami sur Hangout, et c'est vraiment un bon moment de pouvoir faire ce genre de challenge sans "trop" de pression.
Je vous recommande fortement de faire cette compétition, parce que c'est un bon entraînement, parce que c'est fun, et pour permettre la mise en place d'autres événements du  même genre.

 

 

Partagez ce contenu

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *