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

الحلقات المتداخلة

جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 41 من 75.

الحلقة المتداخلة هي ببساطة حلقة داخل حلقة أخرى. ستكمل الحلقة الداخلية جميع تكراراتها لكل تكرار واحد للحلقة الخارجية. التشبيه الجيد لهذا هو الساعة: فلكل ساعة (الحلقة الخارجية)، يجب أن يكمل عقرب الدقائق (الحلقة الداخلية) دورته الكاملة المكونة من 60 دقيقة.

مثال على حلقة متداخلة:

for x in 0..2 {
    for y in 0..2 {
        println!("{} {}", x, y);
    }
}
// سيقوم هذا بطباعة:
// 0 0
// 0 1
// 1 0
// 1 1

تعمل الحلقة الخارجية (x) مرتين، وفي كل مرة من تلك المرات، تعمل الحلقة الداخلية (y) مرتين.

challenge icon

التحدي

مبتدئ

اكتب برنامجاً يجد جميع الثلاثيات من الأرقام التي مجموعها يساوي n باستخدام أرقام من 1 إلى n - 1. يجب أن يعرض البرنامج جميع المجموعات الممكنة حيث يكون الرقم الأول أقل من أو يساوي الرقم الثاني، والرقم الثاني أقل من أو يساوي الرقم الثالث (أي بترتيب غير تناقصي). يضمن ذلك عدم وجود ثلاثيات مكررة مثل "1 2 7" و "2 1 7" التي تمثل نفس مجموعة الأرقام.

على سبيل المثال، إذا كان n = 10، يجب أن تكون المخرجات:

1 1 8
1 2 7
1 3 6
1 4 5
2 2 6
2 3 5
2 4 4
3 3 4

لأن:

1 + 1 + 8 = 10
1 + 2 + 7 = 10
1 + 3 + 6 = 10
1 + 4 + 5 = 10
2 + 2 + 6 = 10
2 + 3 + 5 = 10
2 + 4 + 4 = 10
3 + 3 + 4 = 10

ترتيب الطباعة: يجب طباعة الثلاثيات بترتيب تصاعدي. يجب أن يتكرر الرقم الأول من الأصغر إلى الأكبر، ولكل رقم أول، يجب أن يتكرر الرقم الثاني من الرقم الأول إلى أقصى قيمة صالحة، مع ضمان أن a ≤ b ≤ c.

ورقة مرجعية

الحلقة المتداخلة (nested loop) هي حلقة داخل حلقة أخرى. تُكمل الحلقة الداخلية جميع تكراراتها لكل تكرار واحد من الحلقة الخارجية.

هيكل الحلقة المتداخلة الأساسي:

for x in 0..2 {
    for y in 0..2 {
        println!("{} {}", x, y);
    }
}
// المخرجات:
// 0 0
// 0 1
// 1 0
// 1 1

تعمل الحلقة الخارجية بالكامل، ومع كل تكرار للحلقة الخارجية، تقوم الحلقة الداخلية بتشغيل دورتها الكاملة.

جرّب بنفسك

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let n: i32 = input.trim().parse().unwrap();
    // اكتب كودك بالأسفل

}
quiz iconاختبر نفسك

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

جميع دروس Fundamentals