(date de fin du défit : 24 juin 2020 à minuit)
Vous disposez de 4 fichiers CSV contenant chacuns 2 colonnes : un index (unique et en ordre croissant) et une valeur.
Vous devez rassembler ces données dans un fichier CSV avec 5 colonnes :
- index
- valeur fichier data1
- valeur fichier data2
- valeur fichier data3
- valeur fichier data4
L'index doit être unique et toujours en ordre croissant. S'il n'est pas présent dans l'un de fichier, c'est la valeur du dernier index du fichier qui doit apparaître dans la colonne. Si l'index "n-1" n'existe pas, il faut l'ajouter avant, avec toutes les valeurs précédentes (on répète les dernières valeurs avant de passer au nouveau). Les valeurs de l'index "0" sont toutes à "0".
Exemple avec 2 fichiers:
data1
2;7
4;9
9;11
17;15
25;20
data2
2;5
5;7
8;8
13;14
17;16
125798;266
result
1;0;0
2;7;5
3;7;5
4;9;5
5;9;7
7;9;7
8;9;8
9;11;8
12;11;8
13;11;14
16;11;14
17;15;16
24;15;16
25;20;16
125797;20;16
125798;20;266
## Contraintes de codage
- Doit être compatible PHP 7.4
- Doit être en full objet en dehors du script de lancement (en commande)
- Pas de dépendances externes (mais possible d'utiliser composer pour l'autoload)
- Interdiction d'utiliser les structures de contrôle "if", "for", "foreach", "while", "switch" et "goto"
- Interdiction d'utiliser l'opérateur ternaire, Elvis ou coalesce ("?:", "??")
- Interdiction d'utiliser les fonctions anonymes (closure), classes anonymes et les générateurs (yield)
- Interdiction d'utiliser "return", ni même les références !!!
- La lecture des fichiers doit gérer les cas d'erreurs (mauvais nombres de colonnes, lecture impossible du fichier, etc.)
les 4 fichiers CSV sont disponibles ci-dessous (attention, il y a des lignes vides dans ces fichiers qui doivent être ignorées). Lors des tests, d'autres valeurs et index sont suceptibles d'être soumis.
Non (je viens de mettre à jour le Gist du coup)