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

تحدٍّ - تدقيق الدرجات

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

challenge icon

التحدي

خبير

أكمل scoreAudit باستخدام المعامل rows: List<String>. كل صف هو name:score. تجاهل الصفوف ما لم يؤدِّ التقسيم عند : إلى حقلين بالضبط، ويتطابق الاسم بعد إزالة المسافات المحيطة مع [a-z]+، وتُحلَّل الدرجة بعد إزالة المسافات المحيطة كنوع Int من 0 إلى 100. بالنسبة إلى الأسماء المكررة، احتفظ بأحدث درجة صالحة؛ ولا تستبدل الصفوف غير الصالحة الدرجات السابقة. أعد إدخالات name=score مرتبة حسب تناقص الدرجة، وعند التعادل رتّب أبجديًا.

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

أعد قيمة من النوع List<String>. أبقِ كود الإدخال/الإخراج المقدم كما هو. فهو يقرأ المعاملات المفردة واحدًا في كل سطر؛ وتبدأ القائمة بعدد عناصرها، يليه عناصرها، بينما تبدأ الخريطة بعدد إدخالاتها، يليه كل مفتاح وقيمة. تكرر القوائم المتداخلة تنسيق العدد والعناصر لكل صف. تطبع الدالة main المقدمة قيمة الإرجاع متبوعة بسطر جديد واحد. تستخدم القوائم التنسيق القياسي المحاط بأقواس في Kotlin؛ ولا تطبع أي تسميات إضافية.

جرّب بنفسك

fun scoreAudit(rows: List<String>): List<String> {
    // اكتب حلك هنا.
    return emptyList()
}
fun main() {
    val rowsCount = readln().toInt()
    val rows = mutableListOf<String>()
    for (i0 in 0 until rowsCount) {
        val rowsItem = readLine().orEmpty()
        rows.add(rowsItem)
    }
    println(scoreAudit(rows))
}

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

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