Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الشبكة الأسبوعية

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 36 من 56.

حان الوقت لطباعة التقويم. لكل عادة، قم بعرض شبكة مكونة من سبعة أحرف مع X في الأيام المنجزة و . في الأماكن الأخرى.

// days = [1, 3, 5]
// يعرض: X.X.X..

اصطلاح مفيد: قم ببناء الشبكة كمصفوفة من الأحرف، ثم حولها إلى String مرة واحدة.

var slots = Array(repeating: ".", count: 7)
for d in days {
    slots[d - 1] = "X"
}
let row = slots.joined()

days هو فهرس يبدأ بـ 1 (Mon = 1) ولكن مصفوفات Swift تبدأ بفهرس 0، لذا اطرح 1 عند التعيين. الأيام الخارجة عن النطاق ستؤدي إلى تعطل البرنامج، لذا ثق بتنسيق الإدخال.

challenge icon

التحدي

متوسط

اقرأ سطراً واحداً من المدخلات: قائمة مفصولة بفاصلة من مدخلات habit:day. قم ببناء القاموس كما في السابق، ثم اطبع سطراً واحداً لكل عادة (مرتبة أبجدياً) بالتنسيق التالي:

<habit> |<grid>| <count>

حيث أن grid هي سلسلة نصية مكونة من سبعة أحرف من X/. و count هو عدد الأيام الفريدة التي تم إنجاز العادة فيها.

للمدخلات read:1,read:3,read:5,workout:2,workout:4، تكون المخرجات:

read |X.X.X..| 3
workout |.X.X...| 2

ورقة مرجعية

أنشئ شبكة مكونة من 7 أحرف مع X في الأيام المكتملة و . في أماكن أخرى (الأيام تبدأ من الفهرس 1):

var slots = Array(repeating: ".", count: 7)
for d in days {
    slots[d - 1] = "X"
}
let row = slots.joined()

جرّب بنفسك

var habits: [String: [Int]] = [:]
let ops = readLine()!.components(separatedBy: ",")
for op in ops {
    let parts = op.components(separatedBy: ":")
    let day = Int(parts[1])!
    if !(habits[parts[0], default: []].contains(day)) {
        habits[parts[0], default: []].append(day)
    }
}

// مهام: بناء شبكة من 7 خانات لكل عادة؛ طباعة '<name> |<grid>| <count>'
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتدفق