Réduire la complexité de F9 en séparant débits et crédits

This commit is contained in:
rabot
2026-10-21 11:16:34 +02:00
parent 5cdf32fdae
commit 3f98548446
3 changed files with 101 additions and 28 deletions
+16
View File
@@ -348,3 +348,19 @@ disparaissent. F8 passe de **M = 4 à M = 5** : l'amélioration temporelle
n'implique pas une baisse de M. Les tests comparent les résultats à la
récursion initiale pour les sommes de -2 à 40 et de 0 à 8 types de pièces,
y compris la somme nulle et l'absence de pièces.
### F9 — Séparer les règles des débits et des crédits
`categorie` répartit les transactions entre débit, montant nul et crédit.
Les règles propres aux débits et aux crédits sont regroupées dans deux
fonctions auxiliaires, avec des retours directs. Le test du week-end
`jour % 7 >= 5` remplace les deux comparaisons reliées par `||`.
Le temps reste **`O(1)`** et la complexité cyclomatique de F9 passe de
**14 à 3**, sous l'objectif de 10. Les auxiliaires `categorie_debit`
et `categorie_credit` ont respectivement **M = 5** et **M = 7** : les
décisions ne sont pas simplement déplacées vers une autre fonction
dépassant l'objectif. Les tests confrontent les 20 montants situés aux
seuils et à leurs voisins, y compris `LONG_MIN` et `LONG_MAX`, à la fonction
initiale, pour 20 clients et 210 jours (cycle commun des modulos 7 et 30),
soit **84 000 classifications**.