البروتوكولات والإرسال الديناميكي
Swift
Hard
protocols
مهمة «البروتوكولات والإرسال الديناميكي»
```json
{
"task": "نفذ نظامًا لمعالجة تسلسل البيانات بناءً على البروتوكولات. حدد بروتوكول `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]`، والتي تستقبل مصفوفة من العناصر المتوافقة مع البروتوكول، وتعيد مصفوفة من سلاسل التسلسل. يتم الحفاظ على ترتيب العناصر. القيود: يمكن أن تحتوي السلاسل على أحرف لاتينية فقط، ومسافات، وأرقام؛ لا حاجة للهروب. الإخراج: كل سلسلة في سطر جديد."
}
```
{
"task": "نفذ نظامًا لمعالجة تسلسل البيانات بناءً على البروتوكولات. حدد بروتوكول `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