Générateur de rapports avec extensions pour collections imbriquées

Kotlin Hard extensions

Tâche «Générateur de rapports avec extensions pour collections imbriquées»

Écrivez un programme Kotlin qui, à l’aide de fonctions d’extension pour List<Map<String, Any>>, implémente la génération d’un rapport : applique successivement un filtrage par valeur de clé texte, un tri par clé entière, un regroupement par clé texte et un calcul de la somme d’un champ entier dans chaque groupe. Données d’entrée : un entier N (nombre d’enregistrements), puis N lignes de la forme 'clé1=valeur1,clé2=valeur2,...'. Données de sortie : pour chaque groupe, afficher 'clé_groupe: somme', où somme est la somme des valeurs du champ 'score' pour les enregistrements du groupe. Si après filtrage il ne reste aucun enregistrement, afficher 'empty'.

Format d\ entrée

Un entier N (1 ≤ N ≤ 1000). Ensuite N lignes, chacune contenant des paires 'clé=valeur' séparées par des virgules. Clés : 'name' (String), 'group' (String), 'score' (Int). Les valeurs peuvent contenir uniquement des lettres latines, des chiffres et des espaces. Tous les enregistrements sont valides.

Format de sortie

Lignes de la forme 'clé_groupe: somme' pour chaque groupe après traitement, triées par ordre croissant de clé_groupe. Si la liste résultante est vide, afficher 'empty'.

Exemples

Exemple 1

ENTRÉE
1 name=Frank,group=B,score=100
SORTIE
B: 100
main.kt