Протоколы и динамическая диспетчеризация

Swift Сложный protocols

Задача «Протоколы и динамическая диспетчеризация»

Реализуйте систему для обработки сериализации данных на основе протоколов. Определите протокол `Serializable` с требованием метода `func serialize() -> String`. Создайте структуры `User` (с полями name: String, age: Int), `Address` (city: String, street: String), `Product` (id: Int, title: String, price: Double). Каждая структура должна соответствовать протоколу `Serializable`: возвращайте JSON-подобную строку (например, {"name":"John","age":30}). Напишите функцию `func processSerialization<T: Serializable>(_ items: [T]) -> [String]`, которая принимает массив элементов, соответствующих протоколу, и возвращает массив строк сериализации. Порядок элементов сохраняется. Ограничения: строки могут содержать только буквы латиницы, пробелы и цифры; экранирование не требуется. Вывод: каждая строка на новой строке.

Формат ввода

Первая строка — целое число N (1 ≤ N ≤ 100) — количество объектов. Затем для каждого объекта: строка с типом (User, Address, Product) и соответствующие поля через пробел. Для User: name (String) age (Int). Для Address: city (String) street (String). Для Product: id (Int) title (String) price (Double).

Формат вывода

N строк, каждая — результат сериализации соответствующего объекта в указанном формате.

Примеры

Пример 1

ВВОД
2 Address Paris RueDeRivoli Product 42 Book 12.5
ВЫВОД
{"city":"Paris","street":"RueDeRivoli"} {"id":42,"title":"Book","price":12.5}

Пример 2

ВВОД
3 2 3 1
ВЫВОД

Пример 3

ВВОД
3 https://httpbin.org/delay/1 https://httpbin.org/delay/2 https://httpbin.org/delay/0.5 1000
ВЫВОД
main.swift