Vous êtes sur la page 1sur 5

Capgemini Coding Challenge 2017-2018

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 :

- YES si Aziz et Ayoub vont partir dans le même taxi.


- NO dans le cas contraire.

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.

Parmi les informations demandées, le nom complet du candidat.

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

Ben moussa mohammed

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 :

- Les coordonnées X et Y sont des entiers entre 1 et 10.000.000.


- Les talents sont aussi des entiers entre 1 et 100.000.
- Chaque utilisateur pourra au maximum avoir 10 talents, et cherchent au maximum 10 talents.
- Si la distance fixée par un utilisateur est 0 alors le critère de la distance n’est pas pris en
considération.
- Pour qu’une personne soit proposée à une autre il faut qu’elle possède le critère de la distance
(inférieure ou égale à d, si d n’est pas nulle), ainsi que tous les talents demandés (c’est un ET pas
un OU).

Spécification de l’entrée
L’entrée contient plusieurs cas.

Chaque cas est décrit comme suit :

La première ligne contient un entier N (entre 2 et 100), qui représente l’ensemble des utilisateurs dans
un évènement.

Chaque utilisateur est décrit dans 3 lignes.

- 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

Moha : No profile found !

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

Vous aimerez peut-être aussi