Protocoles et répartition dynamique
Swift
Hard
protocols
Tâche «Protocoles et répartition dynamique»
Implémentez un système de gestion de sérialisation de données basée sur des protocoles. Définissez le protocole `Serializable` avec l'exigence d'une méthode `func serialize() -> String`. Créez les structures `User` (avec les champs name: String, age: Int), `Address` (city: String, street: String), `Product` (id: Int, title: String, price: Double). Chaque structure doit être conforme au protocole `Serializable` : renvoyez une chaîne de type JSON (par exemple, {"name":"John","age":30}). Écrivez une fonction `func processSerialization<T: Serializable>(_ items: [T]) -> [String]` qui prend un tableau d'éléments conformes au protocole et renvoie un tableau de chaînes sérialisées. L'ordre des éléments est conservé. Contraintes : les chaînes ne peuvent contenir que des lettres latines, des espaces et des chiffres ; aucun échappement n'est requis. Sortie : chaque chaîne sur une nouvelle ligne.
Format d\ entrée
La première ligne est un entier N (1 ≤ N ≤ 100) — le nombre d'objets. Ensuite, pour chaque objet : une ligne avec le type (User, Address, Product) et les champs correspondants séparés par des espaces. Pour User : name (String) age (Int). Pour Address : city (String) street (String). Pour Product : id (Int) title (String) price (Double).
Format de sortie
N lignes, chacune étant le résultat de la sérialisation de l'objet correspondant au format spécifié.
Exemples
Exemple 1
ENTRÉE
2
Address Paris RueDeRivoli
Product 42 Book 12.5
SORTIE
{"city":"Paris","street":"RueDeRivoli"}
{"id":42,"title":"Book","price":12.5}
Exemple 2
ENTRÉE
3
2
3
1
SORTIE
Exemple 3
ENTRÉE
3
https://httpbin.org/delay/1
https://httpbin.org/delay/2
https://httpbin.org/delay/0.5
1000
SORTIE
main.swift