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