Il est temps de vérifier les hypothèses !
Ce challenge est issu de l’histoire originale Naya +3 days !
Au fil de son enquête, Naya a identifié des frictions dominantes, repéré des zones sensibles, mis en évidence des motifs récurrents, puis imaginé plusieurs micro-optimisations capables de rendre la mobilité plus fluide. Mais il lui reste une dernière étape : vérifier que tout ce qu’elle a compris tient vraiment quand on l’applique à l’échelle du système.
Pour cela, Naya décide de mettre ses conclusions à l’épreuve directement dans MobilityOS. Elle transforme ce qu’elle a compris au fil de son enquête en chaînes d’optimisation que le système peut exécuter et tester. Cette fois, il ne s’agit plus seulement d’analyser la ville, mais de vérifier si ses hypothèses tiennent vraiment une fois appliquées.
Ce qu’elle cherche désormais, ce n’est plus seulement un bon résultat local. Elle veut voir si les optimisations qu’elle a imaginées, une fois enchaînées et interprétées par MobilityOS, produisent réellement un effet mesurable à l’échelle d’une semaine, puis d’une année entière. C’est le moment de vérité : celui où ses intuitions deviennent, ou non, une preuve.
Pour chaque scénario à tester, tu disposes d’un tableau starting qui définit le gain de base en secondes associé à chaque type de friction, et d’un tableau chains qui contient des séquences d’optimisations à interpréter.
Dans le tableau starting, chaque élément a le format suivant :
(type de friction):(gain de base en secondes)
Dans le tableau chains, chaque élément est une séquence d’étapes séparées par ->. Chaque étape a le format suivant :
(type de friction)(modificateur)(valeur)
Les modificateurs possibles sont * (multiplication) et + (addition), appliqués sur le gain de base du type de friction correspondant dans starting.
Pour interpréter une chaîne, tu dois parcourir ses étapes de gauche à droite. Pour chaque étape, tu calcules d’abord le résultat du modificateur appliqué au gain de base, puis tu ajoutes le résultat de l’étape précédente en bonus. Le gain de la chaîne est la somme de toutes ses étapes.
Par exemple, avec starting contenant transfer:60, crowd:40 et detour:30, la chaîne transfer*2->crowd+10->detour*3 se calcule ainsi :
transfer*2 : 60 × 2 = 120. Pas d’étape précédente, bonus = 0. Résultat : 120crowd+10 : 40 + 10 = 50. Bonus de l’étape précédente : +120. Résultat : 170detour*3 : 30 × 3 = 90. Bonus de l’étape précédente : +170. Résultat : 260Le gain total de cette chaîne est 120 + 170 + 260 = 550 secondes.
Une fois toutes les chaînes interprétées, tu additionnes leurs gains, tu multiplies le total par 52 pour obtenir une projection annuelle, puis tu le convertis en jours, heures et minutes.
Tu dois enfin vérifier si ce total annuel atteint ou dépasse l’objectif de 3 jours récupérés, soit 259 200 secondes.
Format de retour attendu :
OBJECTIF_ATTEINT:jours;heures;minutes
ou
OBJECTIF_NON_ATTEINT:jours;heures;minutes
Exemple : OBJECTIF_ATTEINT:3;2;18
Comme pour tous les challenges, n’hésite pas à te référer à la section « données et logique algorithmique ».
challenge code for resolution via API: THREEDAYS_6
Some resources to help you:
Data and algorithmic logic Methodologies Corrections
Progress through challenges using our resolution aids: tools, techniques and advice to help you overcome the most complex programming challenges with methodology, confidence and creativity.
Dataset and algorithmic logic
Based on the data and the expected response, use the process to determine the logic to implement.
Show data and progressDevelop a structured approach with our solving guides. Work on specific concepts such as object-oriented programming or unit testing to improve your coding style and progress.
No methodology yet for this challenge, but we are working on it! Follow us to be informed of the release!
The corrections allow you to discover certain technical concepts but will also give you a solution to the challenge. Code the challenge yourself before consulting the corrections ;)
No answer yet for this challenge, but we&'re working on it! Follow us to be informed of the release!
Programming concept(s) that can be used to solve this challenge: Conditions, Parsing, Chaines de caractères
Other challenges to complete