Académique Documents
Professionnel Documents
Culture Documents
Capgemini Coding Challenge 2017
Capgemini Coding Challenge 2017
Problem A
Prendre un Taxi
Pour aller au travail, Aziz et Ayoub prennent chaque matin un grand taxi, et quand ils arrivent au
terminus des taxis, Aziz prend son ticket avec le numéro X dans la ligne d’attente. Chaque grand taxi
prend à chaque fois 6 personnes et la ligne est très lente. Aziz ne peut pas savoir si lui et Ayoub vont
prendre le même taxi.
Pour simplifier la première personne venue le matin a eu un ticket avec le numéro ZERO, le numéro de
Aziz est X et celui de Ayoub X+1.
Spécification de l’entrée
L’entrée contient plusieurs cas de test
La première ligne contient un entier T entre 1 et 100 qui indique le nombre de scénarios de test.
Chaque test est décrit sur une ligne sous forme d’un entier X entre 0 et 7 milliards (107) qui indique le
numéro de ticket de Aziz
Spécification de la sortie
Pour chaque scénario afficher une seule ligne qui contient :
STDIN
2
STDOUT
NO
YES
M2K
Problem B
Formulaire
Grâce aux services cloud, on peut avoir beaucoup de choses facilement, par exemple de s’inscrire à un
concours de programmation.
Votre mission se résume à traiter une liste de 10 demandes et afficher le nombre de demandes valides.
Chaque demande est sous forme d’une chaîne de caractère de longueur entre 1 et 80, les demandes
valides sont celles qui ont une longueur entre 10 et 30 caractères.
Spécification de l’entrée
L’entrée contient 10 lignes.
Chaque ligne contient une chaîne de caractères, dont la longueur est entre 1 et 80.
Spécification de la sortie
Afficher une seule ligne contenant le nombre des demandes valides.
STDIN
Ahmed mohamed
Fatima cheddadi
Aaa
Test
Test123
1234567890
Abcdefghij
Chada nada
Omar moha
STDOUT
6
M2K
Problem C
LinkedIn2
LinkedIn teste une nouvelle application mobile qui connecte les professionnels dans la vie réelle.
Parmi les avantages de cette application que durant un évènement, vous n’avez pas à demander à tout
le monde leurs profiles, il suffit de remplir vos talents sur l’application, et les talents que vous cherchez,
plus la distance maximale entre vous et ces personnes qui ont ces talents.
L’application peut utiliser aussi votre position GPS pour ne pas vous proposer des personnes qui sont loin
physiquement de vous.
Pour simplifier on va utiliser les coordonnées cartésiens X et Y, et pour le calcul de la distance entre deux
personnes qui ont comme coordonnées X1, Y1 et X2, Y2 respectivement on va utiliser la définition :
d = |X1 – X2| + |Y1 – Y2| (Durant les évènements on ne peut pas se déplacer à vol d’oiseau il faut
marcher dans les couloirs de l’exposé).
Votre mission est de proposer un programme qui fait un traitement des utilisateurs de LinkedIn pour
afficher pour chacun d’eux s’il va trouver des personnes qui répondent à ses critères ou pas.
Pour simplifier :
Spécification de l’entrée
L’entrée contient plusieurs cas.
La première ligne contient un entier N (entre 2 et 100), qui représente l’ensemble des utilisateurs dans
un évènement.
- La première ligne contient NAME, X, Y, D avec NAME son nom (une chaîne de caractère qui ne
contient pas d’espaces de longueur entre 1 et 20), X, Y et D des entiers entre 0 et 1000, avec X et
Y ses coordonnées et D son critère sur la distance.
- La deuxième ligne contient entre 1 et 10 entiers, qui précisent les talents.
- La troisième ligne contient aussi entre 1 et 10 entiers, les talents qu’ils cherchent.
M2K
Spécification de la sortie
Pour chaque cas afficher la ligne « Case i : » avec i l’indice du cas (on commence par 1), suivie de N
lignes, chaque ligne contient les valeurs suivantes :
« NAME : NAME1 NAME2 .. NAMEm » (s’il y a des profils correspondants) ou « NAME : No profile
found ! » (si aucun profil n’a répondu aux critères).
Avec NAME le nom de l’utilisateur et les NAMEi les profils trouvés (au cas où).
A noter que :
- Il affiche un seul espace entre les différents éléments de la ligne et pas d’espace au début et à la
fin
- Il faut respecter l’ordre de l’apparition de l’entrée soit dans les lignes soit dans la liste des
candidats
STDIN
1
Ahmed 1 1 0
123
Moha 3 3 1
145
STDOUT
Case 1 :
Ahmed : Moha
M2K
Problem D
Smartphone
Aziz, qui a gagné l’an dernier au concours CCC un joli smartphone pense à ajouter une nouvelle
fonctionnalité à son téléphone portable.
Il veut organiser la liste des numéros de téléphone de ses contacts selon les critères suivants :
- Un numéro de téléphone doit commencer par 0 et contient 10 chiffres. Si non il est marqué comme « INVALID ».
- Si un numéro de téléphone commence par « 06 » il sera marqué comme « PORTABLE ».
- Si un numéro de téléphone commence par « 05 » il sera marqué comme « FIXE ».
- Sinon le numéro de téléphone sera marqué comme « UNKNOWN ».
Ayoub a besoin de votre aide pour accomplir cette mission et regrouper ses numéros de téléphone selon
leurs catégories « INVALID », « UNKNOWN », « PORTABLE », « FIXE » (sans quottes).
Spécification de l’entrée
L’entrée contient plusieurs numéros de téléphone à vérifier.
La première ligne contient T qui est le nombre de numéros de téléphone dans la liste des contacts de
Aziz, T est compris entre 1 et 100.
Suivi de T lignes. Chacune contient une chaîne de caractère s avec (3<= |s|<=30).
Il est garanti que la chaine de caractères ne contient que des nombres entre 0 et 9.
Spécification de la sortie
Pour chaque numéro de l’entrée afficher une ligne contenant le statut du numéro (parmi les 4 statuts
mentionnés en haut)
STDIN
5
0612345678
0513245678
0817654321
565432187
012345678000000000
STDOUT
PORTABLE
FIXE
UNKNOWN
INVALID
INVALID
M2K