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

كسر الحلقات المُعنونة

جزء من قسم المنطق وتدفق التنفيذ في رحلة Kotlin على Coddy. الدرس 42 من 63.

تخرج عبارة break العادية من الحلقة الأقرب فقط. امنح الحلقة الخارجية تسمية مثل search@، ثم استخدم break@search داخل حلقة متداخلة للخروج من البحث بأكمله عند الوصول إلى هدفه. تنتمي التسمية إلى الحلقة التي تليها مباشرةً.

داخل main:

var found = -1
search@ for (row in listOf(listOf(1, 4), listOf(6, 8))) {
    for (value in row) {
        if (value % 2 == 0) {
            found = value
            break@search
        }
    }
}
println(found)

أربعة هي أول قيمة زوجية حسب ترتيب الصفوف، وتجاوز التعليمة break ذات التسمية الصفوف المتبقية.

تخرج عبارة break المُسمّاة من الحلقة ذات التسمية المحددة، بما في ذلك العمل المتداخل فيها.

challenge icon

التحدي

متوسط

أكمل firstEven باستخدام المعاملات grid: List<List<Int>>. اعثر على أول قيمة زوجية بترتيب الصفوف، باستخدام تعليمة كسر ذات تسمية لإيقاف الحلقتين معًا. أعد ‎-1‎ إذا لم توجد مطابقة. تُحتسب القيم الزوجية الصفرية والسالبة.

ما لم تُذكر حدود أكثر صرامة أعلاه، تحتوي المجموعات على 100 عنصر كحد أقصى في كل مستوى، وتكون المعاملات الصحيحة وقيم المجموعات الصحيحة بين ‎-1000‎ و‎1000‎. يمكن أن يتضمن النص المُدخل للتحليل تمثيلات غير صالحة أو خارجة عن النطاق كما هو موضح.

أعد قيمة من النوع Int. أبقِ كود الإدخال/الإخراج المُقدَّم. فهو يقرأ المعاملات المفردة، معاملًا واحدًا في كل سطر؛ وتبدأ القائمة بعدد عناصرها متبوعًا بعناصرها، وتبدأ الخريطة بعدد إدخالاتها متبوعًا بكل مفتاح وقيمة. تكرر القوائم المتداخلة تنسيق العدد والعناصر لكل صف. تطبع main المُقدَّمة قيمة الإرجاع متبوعة بسطر جديد واحد. تستخدم القوائم التنسيق القياسي ذي الأقواس المربعة في Kotlin؛ ولا تطبع أي تسميات إضافية.

جرّب بنفسك

fun firstEven(grid: List<List<Int>>): Int {
    // اكتب حلك هنا.
    return 0
}
fun main() {
    val gridCount = readln().toInt()
    val grid = mutableListOf<List<Int>>()
    for (i0 in 0 until gridCount) {
        val gridItemCount = readln().toInt()
        val gridItem = mutableListOf<Int>()
        for (i1 in 0 until gridItemCount) {
            val gridItemItem = readln().toInt()
            gridItem.add(gridItemItem)
        }
        grid.add(gridItem)
    }
    println(firstEven(grid))
}
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: Playground لـ Kotlin